Shell中特殊变量

$0
Shell本身的文件名。

$n
传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2。

$#
传递给脚本或函数的参数个数。

$*
所有参数列表。

$@
所有参数列表。$* 和 $@ 都表示传递给函数或脚本的所有参数,不被双引号("")包含时,都以"$1" "2"…"n" 的形式输出所有参数;当它们被双引号("")包含时,"$*" 会将所有的参数作为一个整体,以"$1 $2 … n"的形式输出所有参数;"@" 会将各个参数分开,以"$1" "2"…"n" 的形式输出所有参数。

$?
最后运行的命令的结束代码(返回值)即执行上一个指令的返回值 (显示最后命令的退出状态,0表示没有错误,其他任何值表明有错误)。

$$
当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID。

$!
Shell最后运行的后台Process的PID(后台运行的最后一个进程的进程ID号)。

$-
显示shell使用的当前选项,与set命令功能相同。

!!
执行上一条命令。

!number
执行~/.bash_history当中的第number条命令。

!command
由最近的命令向前搜寻首个命令串开头为command的命令,并执行。

&>
将STDERR和STDOUT的输出重定向到同一个输出文件。

&-
如要关闭文件描述符,可以将它重定向到特殊符号&-。

.
点操作符,点操作符是source命令的别名,它会在shell上下文中执行点操作符指定的脚本,而不是创建一个新的shell。

IFS
IFS 是一种set变量,它定义了shell用作字段分隔符的一系列字符,默认是space,tab,newline来拆解读入的变量,然后对特殊字符进行处理,最后重新组合赋值给该变量。

' '与" "的区别
单引号内的内容原样输出,而在双引号中,如果内容中有命令,变量等,会先把变量,命令解析出结果,然后在输出最终内容来。

原文地址:https://www.cnblogs.com/xiaoleimagic/p/13864177.html