当我使用参数运行此代码时,例如./getopts -a
,它会打印“hi -a”
,尽管预期的输出将是“hi hello”
。有什么想法出了什么问题吗?
#!/bin/bash
while getopts a:name
do
case $name in
a)aopt=$OPTARG;;
*)echo "Invalid arg";;
esac
done
if [[ ! -z $aopt ]]; then
echo $aopt
fi
shift $(($OPTIND - 1))
#exit 0
最佳答案
可能您缺少引号和空格:
while getopts "a:" name; do echo "name=$name"; case $name in a)aopt=$OPTARG;; *)echo "Invalid arg";; esac done if [[ ! -z $aopt ]]; then echo $aopt fi shift $(($OPTIND - 1))
通过命令执行:
./myCode“嗨你好”关于linux - 脚本的输出不是预期的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36686040/