一、$1、$2...$n接收参数
这个方法比较简单,直接上代码:
脚本:
#/bin/bash/
echo $1,$2,$3
执行命令:
bash test.sh 1 2 3
执行结果:
1,2,3
二、getopts
先上代码:脚本1(参数不跟值):
#/bin/bash/
while getopts "ab" opt; do
case $opt in
a)
echo "this a is a"
;;
b)
echo "this b is b"
;;
\?)
echo "error option!"
;;
esac
done
执行命令及结果:
root@ubuntu:/test# bash test.sh -a
this a is a
root@ubuntu:/test# bash test.sh -b
this b is b
root@ubuntu:/test# bash test.sh -ab
this a is a
this b is b
root@ubuntu:/test# bash test.sh -c
test.sh: illegal option -- c
error option!
root@ubuntu:/test#
脚本二(参数有值):
#/bin/bash/
while getopts "a:b:" opt; do
case $opt in
a)
echo "this a is $OPTARG"
;;
b)
echo "this b is $OPTARG"
;;
\?)
echo "error option!"
;;
esac
done
执行命令及结果:
root@ubuntu:/test# bash test.sh -a
this a is a
root@ubuntu:/test# bash test.sh -b
this b is b
root@ubuntu:/test# bash test.sh -ab
this a is a
this b is b
root@ubuntu:/test# bash test.sh -c
test.sh: illegal option -- c
error option!
root@ubuntu:/test#
说明:
":":如果某个选项(option)后面出现了冒号(":"),则表示这个选项后面可以接参数(即一段描述信息DESCPRITION)。也就是说,参数后面有冒号就可以接参数,否则不识别。
附:shell脚本里面传参还有第三种getopt,这种方法依然会将参数$1、$2...$n排序。