Sin*_*one 70 string bash null case
我有一个Bash脚本,它根据变量的值执行操作.case语句的一般语法是:
case ${command} in
start) do_start ;;
stop) do_stop ;;
config) do_config ;;
*) do_help ;;
esac
Run Code Online (Sandbox Code Playgroud)
如果没有提供命令,我想执行默认例程,如果命令无法识别,我想执行do_help.我试着省略案例值:
case ${command} in
) do_default ;;
...
*) do_help ;;
esac
Run Code Online (Sandbox Code Playgroud)
结果是可以预测的,我想:
syntax error near unexpected token `)'
Run Code Online (Sandbox Code Playgroud)
然后我尝试在正则表达式中使用我最好的镜头:
case ${command} in
^$) do_default ;;
...
*) do_help ;;
esac
Run Code Online (Sandbox Code Playgroud)
有了这个,空的$ {command}就会落到*case.
我想做不可能的事吗?
ric*_*ici 110
该case声明使用了整数,而不是正则表达式,并坚持完全匹配.
所以空字符串像往常一样写成""或'':
case "$command" in
"") do_empty ;;
something) do_something ;;
prefix*) do_prefix ;;
*) do_other ;;
esac
Run Code Online (Sandbox Code Playgroud)
小智 5
我使用简单的跌倒。没有传递的参数 ($1="") 将被第二个 case 语句捕获,但以下 * 将捕获任何未知参数。翻转 "") 和 *) 将不起作用,因为 *) 在这种情况下每次都会捕获所有内容,甚至是空白。
#!/usr/local/bin/bash
# testcase.sh
case "$1" in
abc)
echo "this $1 word was seen."
;;
"")
echo "no $1 word at all was seen."
;;
*)
echo "any $1 word was seen."
;;
esac
Run Code Online (Sandbox Code Playgroud)