use*_*484 4 scripting shell-script posix case
假设有以下情况:
#!/bin/sh
case $1 in
e|ex|exa|exam|examp|exampl|example) echo "OK"
;;
t|te|tes|test) echo "Also OK"
;;
*) echo "Error!"
;;
esac
Run Code Online (Sandbox Code Playgroud)
对于这种情况,是否有更优雅且同时符合 POSIX 标准的解决方案(即,没有 bash、zsh 等)?
PS 不需要exampleeee
或不需要Exam
工作。
你可以做的是扭转比较:
case "example" in
"$1"*) echo OK ;;
*) echo Error ;;
esac
Run Code Online (Sandbox Code Playgroud)
用多个词,你可以坚持你最初的想法
case "$1" in
e|ex|exa|exam|examp|exampl|example) : ;;
t|te|tes|test) : ;;
f|fo|foo) : ;;
*) echo error ;;
esac
Run Code Online (Sandbox Code Playgroud)
或使用循环和“布尔”变量
match=""
for word in example test foo; do
case "$word" in
"$1"*) match=$word; break ;;
esac
done
if [ -n "$match" ]; then
echo "$1 matches $match"
else
echo Error
fi
Run Code Online (Sandbox Code Playgroud)
您可以决定哪个更好。我认为第一个很优雅。
归档时间: |
|
查看次数: |
190 次 |
最近记录: |