标准流与参数

Bash 脚本入门

Alex Scriven

Data Scientist

STDIN-STDOUT-STDERR

在 Bash 脚本中,程序有三个"流":

  • STDIN(标准输入):进入程序的数据流
  • STDOUT(标准输出):从程序输出的数据流
  • STDERR(标准错误):程序中的错误

默认情况下,这些流来自并输出到终端。

您可能会在脚本调用中看到 2> /dev/null;将 STDERR 重定向为丢弃。(1> /dev/null 是 STDOUT)

Bash 脚本入门

标准流图示

下图以先前的管道为例,展示了标准流:

标准流示意图

Bash 脚本入门

STDIN 示例

有一个包含 3 行数据的文本文件(sports.txt)。

football
basketball
swimming

命令 cat sports.txt 1> new_sports.txt 会从文件读取并将 STDOUT 写入新文件。再执行 cat new_sports.txt 查看结果

football
basketball
swimming
Bash 脚本入门

STDIN 与 ARGV

Bash 脚本的一个关键概念是参数(arguments)

在脚本调用后加空格再加参数,脚本即可在内部使用这些参数。

  • ARGV 是传给程序的全部参数数组。
  • 每个参数可用 $ 访问:第一个 $1,第二个 $2,以此类推。
  • $@$* 给出 ARGV 中的所有参数
  • $# 给出参数个数
Bash 脚本入门

ARGV 示例

来看一个示例脚本(args.sh):

#!/usr/bash
echo $1
echo $2
echo $@
echo "There are " $# "arguments"
Bash 脚本入门

运行 ARGV 示例

现在运行 bash args.sh one two three four five

one
two
one two three four five
There are 5 arguments

 

#!/usr/bash
echo $1
echo $2
echo $@
echo "There are " $# "arguments"
Bash 脚本入门

Passons à la pratique !

Bash 脚本入门

Preparing Video For Download...