一:$$
含义:Shell本身的PID(ProcessID)
#!/bin/bash
echo $$
二:$!
含义:Shell最后运行的后台Process的PID
#!/bin/bash
echo $!
~
三:$?
最后运行的命令的结束代码(返回值) ,其中值为0,操作成功,非零失败。
#!/bin/bash
echo $?
非0失败
四:$-
使用Set命令设定的Flag一览
$-记录着当前设置的shell选项,himBH是默认值,5个字母分别有各自含义。解释如下:
h:hashall,打开这个选项后,Shell 会将命令所在的路径记录下来,避免每次都要查询。举例:当h选项开启时,如果将某个自定义命令从/usr/bin/目录下移动到/usr/local/bin/,再运行,会提示无此命令。而当通过set +h将h选项关闭后,上述情况就不会出现。
i:interactive-comments,包含这个选项说明当前的 shell 是一个交互式的 shell。所谓的交互式shell,就是输入命令后,shell解释执行,然后返回一个结果。在脚本中,i选项是关闭的。
m:monitor,打开监控模式,就可以通过Job control来控制进程的停止、继续,后台或者前台执行等。
B:braceexpand,大括号扩展。举例如下:
lenovo@lenovo-DK ~
$ ls
A_File
lenovo@lenovo-DK ~
$ cp A_File{,.back_up}
lenovo@lenovo-DK ~
$ ls
A_File A_File.back_up
如果关闭B选项,那么shell就不会将大括号扩展。
5. H:history,Shell 会把我们执行的命令记录下来,可以通过 history 命令查看,每一行是序号 + 执行的命令,在 shell 退出时,会将这些信息保存到~/.bash_history 文件中。如果H选项打开,就可以展开历史列表中的命令,可以通过!感叹号来完成,例如"!!"返回上最近的一个历史命令,"!n"返回第 n 个历史命令,等等。
五:$*
所有参数列表。如"$*“用「”」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。
六;$@
所有参数列表。如"$@“用「”」括起来的情况、以"$1" “ 2 " … " 2" … " 2"…"n” 的形式输出所有参数。
七:$#
添加到Shell的参数个数
#!/bin/bash
echo $#
~
八:$0
Shell本身的文件名
#!/bin/bash
echo $0
~
九: 1 ~ 1~ 1~n
添加到Shell的各参数值。$1是第1参数、$2是第2参数…。