Har*_*ald 5 shell bash wildcards
是否有一种简单但稳定的方法来验证 glob 模式在 Bash 中具有独特的扩展?
a=$(echo -n somedir-*); [ -z "$a" ] ...
Run Code Online (Sandbox Code Playgroud)
这仅测试是否扩展了某些内容,甚至更多取决于 glob 设置。
POSIXly(甚至 Bournely):
set -- somedir-[*] somedir-*
case $#-$1-$2 in
'2-somedir-[*]-somedir-*') echo 0 match;;
2-*) echo 1 match;;
*) echo more than one match;;
esac
Run Code Online (Sandbox Code Playgroud)
这somedir-[*] somedir-*是为了消除以下情况的歧义:
somedir-[*] somedir-*)somedir-*(扩展为somedir-* somedir-*.使用bash,您可以执行以下操作:
(shopt -s nullglob
set -- somedir-*
[ "$#" -eq 1 ])
Run Code Online (Sandbox Code Playgroud)
ksh93, zsh,yash具有类似的功能(该功能来自zsh)但具有不同的语法。