TKH*_*KHN -2 string shell-script case
我正在比较 case 语句中的字符串,如下所示:输入变量可以是 DP KL ...
case $input in
D|P|Q|L1|L2)
val="Hello";;
DD|DE|DF|CA)
val="Hi" ;;
MM|KL||TK|SZ)
val="Bye" ;;
echo $input
Run Code Online (Sandbox Code Playgroud)
输入变量不打印任何东西..
您的脚本中有两个主要问题:
case
语句不是由 关闭的esac
。||
which 是大多数 Bourne-like shell 中的语法错误(使用''
or""
或解析为空值以可移植地匹配空字符串的扩展)不清楚你的脚本实际上在做什么,所以我推测了一下并写了这个:
#!/bin/sh
input="$1"
case "$input" in
D|P|Q|L1|L2)
val='Hello' ;;
DD|DE|DF|CA)
val='Hi' ;;
MM|KL|""|TK|SZ)
val='Bye' ;;
*)
echo 'error' >&2
exit 1
esac
printf 'input was "%s", val is "%s"\n' "$input" "$val"
Run Code Online (Sandbox Code Playgroud)
测试它:
$ ./script.sh D
input was "D", val is "Hello"
$ ./script.sh MM
input was "MM", val is "Bye"
$ ./script.sh BOO
error
Run Code Online (Sandbox Code Playgroud)