在Bash中,似乎有几个变量保存着特殊的、含义一致的值。例如,
./myprogram &; echo $!
将返回后台进程的PID。我知道其他的,比如$?我想这就是现在的TTY。还有其他的吗?
在Bash中,似乎有几个变量保存着特殊的、含义一致的值。例如,
./myprogram &; echo $!
将返回后台进程的PID。我知道其他的,比如$?我想这就是现在的TTY。还有其他的吗?
$1, $2, $3, ... are the positional parameters. "$@" is an array-like construct of all positional parameters, {$1, $2, $3 ...}. "$*" is the IFS expansion of all positional parameters, $1 $2 $3 .... $# is the number of positional parameters. $- current options set for the shell. $$ pid of the current shell (not subshell). $_ most recent parameter (or the abs path of the command to start the current shell immediately after startup). $IFS is the (input) field separator. $? is the most recent foreground pipeline exit status. $! is the PID of the most recent background command. $0 is the name of the shell or shell script.
以上大部分可以在Bash参考手册中的特殊参数中找到。下面是shell设置的所有环境变量。
有关综合索引,请参阅参考手册变量索引。
为了帮助理解$#,$0和$1,…, $n做,我使用这个脚本:
#!/bin/bash
for ((i=0; i<=$#; i++)); do
echo "parameter $i --> ${!i}"
done
运行它会返回一个有代表性的输出:
$ ./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可能包括一些前导路径以及程序的名称。例如,将这两行脚本保存为。/mytry.sh并执行它。
#!/bin/bash
echo "parameter 0 --> $0" ; exit 0
输出:
parameter 0 --> ./mytry.sh
这是当前(2016年)版本的Bash,通过Slackware 14.2