1, 从命令行获取参数
$0 表示脚本文件名
$1 表示第一个参数
$2,...,$9, ${10}, ${11}...
$# 表示参数个数
每执行一次shift,the value of $2 is moved to $1, the value of $3 is moved to $2 and so on. $# 也会自减1。
2,函数参数
$0 仍然表示命令行脚本文件名
$# 表示参数个数
$1 表示第一个参数,以次类推。
3,稍微复杂的解析
#!/bin/bash
# posit-params3: script to demonstrate $* and $@
print_params () {
echo "\$1 = $1"
echo "\$2 = $2"
echo "\$3 = $3"
echo "\$4 = $4"
}
pass_params () {
echo -e "\n" '$* :'; print_params $*
echo -e "\n" '"$*" :'; print_params "$*"
echo -e "\n" '$@ :'; print_params $@
echo -e "\n" '"$@" :'; print_params "$@"
}
pass_params "word" "words with spaces"
With our arguments, both $* and $@ produce a four-word result.
word words with spaces
"$*" produces a one-word result: "word words with spaces"
"$@" produces a two-word result: "word" "words with spaces"
带双引号的 "$@" 是经常被用到的。