我试图让用户能够输入“i”或“v”并有不同的消息回显
这是我的代码:
while getopts :iv opt
do
case $opt in
i) interactive=true ;;
v) verbose=true ;;
\?) echo "$0: invalid option --'$OPTARG'"
exit ;;
esac
done
shift $(($OPTIND - 1))
到目前为止它仍然有效,但我不确定如何在此循环之外调用它。
我应该使用if循环吗?请帮助!
答案 0 :(得分:0)
通过在循环之前将它们设置为值,确保不继承环境变量interactive
和verbose
。
interactive=false
verbose=false
while getopts :iv opt
do ...
done
您展示的代码会识别命令行选项-i
或-v
或其组合,并相应地设置变量。
然后,您可以根据$interactive
和$verbose
的值,在循环后执行不同的操作。请注意,这些测试假设变量设置为true
或false
(字符串);如果变量为空,它们将无法正常工作。
if [ $interactive = true ]
then read line
...process $line...
fi
if [ $verbose = true ]
then echo "Talking more than usual..."
fi
等
我不确定'如何在此循环之外调用它'意味着什么。