#!/usr/bin/env bash
#list of variables created
#variable1="$(command1)"
#variable2="$(command2)"
#variable3="$(command3)"
#variable4="$(command4)"
#variable5="$(command5)"
echo "some question"
read -p "Enter Input from 1 to 10" input
case $input in
1)
echo $variable1
echo $variable2
echo $variable3;;
2)
echo $variable2
echo $variable3
echo $variable4;;
3)
echo $variable3
echo $variable4
echo $variable5;;
esac
如您所见,有一些变量列表正在创建,以后将根据用户输入在case语句中使用
由于单个用户输入不需要所有变量,因此我认为通过提前创建每个变量来不必要地增加脚本运行时间。我不希望事先创建所有变量。如果所选用户输入需要它们,则应创建它们
我知道我可以在case语句中的可能的用户输入中直接创建这些变量,以便仅当用户选择了该输入时才创建特定变量,但是输入很多,每个输入都需要多个变量,这实际上会使脚本相当长。我想知道是否有一种聪明的方法来实现这一目标,这将有助于减少脚本运行时间?
如果模式动作对以终止;;&
,则bash会继续执行下一个模式,就好像当前模式不匹配一样,而不是从case
当前正在处理的命令中返回。
利用此功能,可以将问题中的示例脚本简化为:
#!/usr/bin/env bash
read -r -p 'prompt' input
case $input in
(1)
command1 ;;&
(1|2)
command2 ;;&
(1|2|3)
command3 ;;&
(2|3)
command4 ;;&
(3)
command5 ;;
esac
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句