简单的UNIX案例陈述

时间:2013-04-18 23:22:30

标签: unix if-statement case

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

1 个答案:

答案 0 :(得分:0)

通过在循环之前将它们设置为值,确保不继承环境变量interactiveverbose

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

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

然后,您可以根据$interactive$verbose的值,在循环后执行不同的操作。请注意,这些测试假设变量设置为truefalse(字符串);如果变量为空,它们将无法正常工作。

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

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

我不确定'如何在此循环之外调用它'意味着什么。