Linux 不是脚本的预期输出
当我使用一个参数(例如./getopts-a)运行这段代码时,它会打印hi-a,尽管预期的输出是hi-hello。你知道怎么回事吗Linux 不是脚本的预期输出,linux,bash,Linux,Bash,当我使用一个参数(例如./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
#!/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
可能是缺少引号和空格: 通过命令执行:
./myCode hi hello看起来唯一与您的-a选项相关的是hi。如果你只需要把hello和hi一起拉,你可以用3美元从命令行拉出来
while getopts "a:" name; do
case $name in
a)aopt=$OPTARG;;
*)echo "Invalid arg";;
esac
done
if [[ ! -z $aopt ]]; then
echo "$aopt $3"
fi
shift $(($OPTIND - 1))
请注意你需要回音的地方。我建议您在getopt上快速浏览一下。…然后。。。发生了什么?请问,问题是什么?如果我运行这个代码时带有一个参数:./getopts-ahi hello,它会打印hi-a。我该如何打印hi HELLO该评论应该是您的问题帖子的一部分。问题及其主要细节应该是问题帖子本身的一部分,而不是评论。
while getopts "a:" name; do
case $name in
a)aopt=$OPTARG;;
*)echo "Invalid arg";;
esac
done
if [[ ! -z $aopt ]]; then
echo "$aopt $3"
fi
shift $(($OPTIND - 1))