0

我试图让用户能够输入“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 循环吗?请帮忙!

4

1 回答 1

0

确保您不继承环境变量interactive并将verbose它们设置为循环之前的值。

interactive=false
verbose=false
while getopts :iv opt
do ...
done

您显示的代码将识别命令行选项-i或其-v组合,并相应地设置变量。

$interactive然后,您可以根据和的值使循环后的代码执行不同的操作$verbose。请注意,这些测试假定变量设置为trueor false(strings); 如果变量为空,它们将无法正常工作。

if [ $interactive = true ]
then read line
     ...process $line...
fi

if [ $verbose = true ]
then echo "Talking more than usual..."
fi

等等。

我不确定“如何在这个循环之外调用它”是什么意思。

于 2013-04-18T23:29:05.697 回答