Bash Shell 特殊用法笔记
有些特殊用法老是记不住,随便记录一下。
是各处搜集来的,就不好好排版了。
特殊输入输出重定向
0 表示标准输入 STDIN
1 表示标准输出 STDOUT
2 表示标准错误输出 STDERR
>
标准输出重定向,单独使用时等同于 1>
;
&>file
意思是把标准输出和标准错误输出都重定向到 file,相当于 1>file 2>&1
,且不能使用 1>file 2>file
;
2>&1
意思是把标准错误输出重定向到标准输出;xxx 2&>1
是错误的,等同于xxx 2 1>1 2>1
,第一个 2 被认为是 xxx 的参数,也就是 xxx 2 &>1
;
1>&2
意思是把标准输出重定向到标准错误;
对于 >&
,参数是一个文件描述符(一个小整数) ,例如 >& 1
1 被认为是标准输出。
对于&>
,参数是一个文件名(并且"1"
是一个完全有效的文件名),例如 &> 1
但 1 实际上被认为是文件。
特殊变量
变量和描述 |
---|
$0 当前脚本的文件名。 |
$n 这些变量对应于调用脚本的参数。这里 n 是对应于参数位置的正十进制数(第一个参数是 $1,第二个参数是 $2,依此类推)。 |
$# 提供给脚本的参数数量。 |
$* 所有参数都被双引号引起来。如果脚本接收两个参数,则 $* 等价于 $1 $2。 |
$@ 所有参数都单独双引号。如果脚本接收两个参数,则 $@ 等价于 $1 $2。 |
$? 最后执行的命令的退出状态。 0 成功,1 不成功。但有些程序也会根据不成功的种类返回其他值,均代表不成功。 |
$$ 当前shell的进程号。对于 shell 脚本,这是它们正在执行的进程 ID。 |
$! 最后一个后台命令的进程号。 |
$((运算式)) 双括号是 bash 本身的功能,和 $ 没有关系。 |