我有代码
read input
case "$input" in
"list"* )
blah
;;
"display"* )
blah
;;
"identify"* )
blah
;;
"rules"* )
perl image.pl $input[1]
;;
"quit" )
echo "Goodbye!"
;;
* )
echo -n "Error, invalid command. "
;;
esac
我正在试图弄清楚如何将$ input的值传递给image.pl而不在输入中包含字符串“rules”。
即,如果用户输入'rules -h',我只想将'-h'传递给image.pl。
与我的其他情况一样,我想进行特异性测试,如果在输入中传递了任何其他参数,例如'quit'我想测试一个用户是否说'退出x'并抛出一个'quit'不接受任何其他“参数”的特定错误。
感谢。
答案 0 :(得分:4)
假设您使用Bourne shell作为标题指定:
read input
set -- $input
case "$1" in
list)
blah
;;
rules)
perl image.pl "$2"
;;
esac
答案 1 :(得分:1)
您可以使用$input
变量在bash中初始化数组,这是代码:
read input
declare -a arr=($input)
case "${arr[0]}" in
"list")
blah
;;
"display")
blah
;;
"identify")
blah
;;
"rules")
shift
perl image.pl ${arr[1]}
;;
"quit")
echo "Goodbye!"
;;
*)
echo -n "Error, invalid command. "
;;
esac