1.最基本的read,通过read交互式传递:
read name
echo $name
2.使用$0,$1…传递:
比如脚本中echo "0:$0 1:$1 2:$2"
运行脚本命令:./test.sh first second
输出的 $0就是./test.sh $1是first $2是second。
3.使用getops实现选项参数对应传递:
while getopts ":a:b:c:h" opt;
do
case $opt in
a)
echo "type:$OPTARG"
;;
b)
echo "name$OPTARG"
;;
c)
echo "size$OPTARG"
;;
h)
print_help
exit 1
;;
esac
done
上面的h对应的之所以要exit 1,即直接退出,是为了防止在查看help内容的时候脚本继续执行后面的操作。
print_help是下面的函数。
传参方式:./test -a 要传给type后面输出的值 -b .......
如果选项不在a b c中,则调用?后面的操作。
":a:b:c"
中的冒号是有一些意义的:
①最开始的冒号代表忽略系统报错使用自定义报错;
②每个字母后面的冒号代表使用该选项就必须带参数,可以和选项用空格隔开,也可以连着;
③字母后面没有冒号代表这个选项可以使用但是参数不会传递进去;
PS: getopts不支持多字母的选项,只支持单个字母,如上a,b,c。
如果要调用函数的话,只写函数名称,不带括号。函数声明的时候需要
如声明一个输出函数,EOF(End of file)代表这一段话作为一个文件。
print_help(){
cat <<EOF -n name input the name of virtual machine. (default: fabric)
EOF
}
3.getopt长字符传参:
getopt不是bash内置命令,但一般Linux都自带