关于bash:什么是特殊的美元符号shell变量?

What are the special dollar sign shell variables?

在bash中,似乎有几个变量具有特殊的、一致的意义值。例如,

1
./myprogram &; echo $!

将返回回接myprogram的进程的PID。我知道其他人,比如我认为是当前TTY的$?。还有其他人吗?


  • $1$2$3……在定位参数。
  • "$@"阵列状构造是{$1, $2, $3 ...}所有定位参数。
  • "$*"是IFS的扩张$1 $2 $3 ...所有定位参数。
  • $#定位参数的个数。
  • $-流选项集的外壳。
  • $$PID的流壳(不同)。
  • 最新的$_参数(或ABS的命令路径。当前壳后立即开始启动)。
  • $IFS是场分离器(输入)。
  • 管道是指$?最近退出的地位。
  • $!是PID的最新背景命令。
  • 的名字是$0壳或外壳脚本。

我们可以在上面找到的特殊参数在Bash参考手册。有所有的环境变量集的外壳。

一个综合指数,请看参考手册的变量指标。


  • $_负载参数负载命令
  • $#脚本参数传递到流数
  • $*参数列表传递到$@/脚本/分隔的字符串列表

开关的顶我的头。谷歌的bash的特殊变量。


帮助理解什么$#$0$1,…,$ndo,I:使用脚本

1
2
3
4
5
#!/bin/bash

for ((i=0; i<=$#; i++)); do
  echo"parameter $i --> ${!i}"
done

返回a代表输出:运行它

1
2
3
4
5
$ ./myparams.sh"hello""how are you""i am fine"
parameter 0 --> myparams.sh
parameter 1 --> hello
parameter 2 --> how are you
parameter 3 --> i am fine


有一些照顾的例子可能包括0美元;一些领先的路径名称的工作人员的程序。这两个脚本保存为EC /线。mytry.sh和执行它。

1
2
3
#!/bin/bash

echo"parameter 0 --> $0" ; exit 0

输出:

1
parameter 0 --> ./mytry.sh

这是在一个流(2016年)版Slackware 14.2 bash,通过