$#
命令行第二个表达式或者是单个的变量
$*
所有的单个参数,就想一个单词一样
$@
与 $*一样, 但是每一个参数是一个限定的字符串, 因此字符串是功过交互, 没有多余的作用,意思就是,在其他的字符串里每一个字符串都看成一个分隔的单词。
Example arglist: Listing arguments with $* and $@
#!/bin/bash
E_BADARGS=65
if [ ! -n "$1" ]
then
echo "Usage: `basename $0àrgument1 argument2 etc."
exit $E_BADARGS
fi
echo
index=1
echo "Listing args with \"\$*\":"
for arg in "$*" # 不起作用"$*" 不是限制.
do
echo "Arg #$index = $arg"
let "index+=1"
done # $* 看成是所有的表达是的单个单词
echo "Entire arg list seen as single word."
echo
index=1
echo "Listing args with \"\$@\":"
forarg in "$@"
do
echo "Arg #$index = $arg"
let "index+=1"
done # $@ 看所有的额变大事是一个分隔的单词
echo "Arg list seen as separate words."
echo
exit 0
还可以加一个特别有意思的,加一个shift,前面的一个数值就会消失,小伙伴可以试试。
.
#!/bin/bash
# Invoke with ./scriptname 1 2 3 4 5
echo "$@" # 1 2 3 4 5
shift
echo "$@" # 2 3 4 5
shift
echo "$@" # 3 4 5
# Each "shift" loses parameter $1.
其他特殊参数
$-
在脚本里作为一个标记,一个作用就是可以交互自测
$!
PID (process id) 最后一个进程
$_
这个特殊变量的值是设置在提交前的的值
Example 9-9. underscore variable
#!/bin/bash
echo $_ # /bin/bash
du >/dev/null #没有输出
echo $_ # du
ls -al >/dev/null # 没有输出
echo $_ # -al (last argument)
:
echo $_
reference:Advanced.Bash.Shell.Scripting.Guid,unix.shell范例精讲。
设置Linux环境变量的方法和区别
Ubuntu 14.04安装JDK1.8.0_25与配置环境变量