$- 变量表示传递给脚本的 FLAG,这个 FLAG 是由 set 命令指定的。
示例代码:
[Bash shell] 纯文本查看 复制代码 #!/bin/bash
set -x -e
echo "hello shell builtin varibal"
echo "$-"
exit 0
运行输出:$ ./var.sh
+ echo 'hello shell builtin varibal'
hello shell builtin varibal
+ echo ehxB
ehxB
+ exit 0 在脚本中,我们用 set 为脚本添加了 -e 和 -x 两个 Flag,然后在 echo $- 中可以看到这两个 Flag 的输出,在 ehxB 中,h 和 B 这两个 Flag 是默认传递进来的。
$$ 变量表示当前脚本的 PID 值。看下面代码示例:
[Bash shell] 纯文本查看 复制代码 #!/bin/sh
echo "$$"
sleep 30
exit 0
运行上面的脚本,然后在 30 秒内在另一个终端里用 ps 命令验证即可知晓。
$! 变量表示后台运行的最后的工作的 PID 。
测试代码:
[Bash shell] 纯文本查看 复制代码 #!/bin/bash
LOG=$0.log
COMMAND1="sleep 100"
echo "Logging PIDs background commands for script: $0" >> "$LOG"
echo >> "$LOG"
echo -n "PID of \"$COMMAND1\": " >> "$LOG"
${COMMAND1} &
echo $! >> "$LOG"
在输出的 LOG 文件中可以看到 sleep 这个进程的 PID 号(sleep),在 100S 期间可以用 ps 来进行验证。
$_ 该变量保存之前执行命令的最后一个参数。
比如运行指令 ps aux ,然后再运行 echo $_ 就可以看到输出为: |