我正在尝试使用由不同字符串组成的变量|作为case语句测试。例如:
string="\"foo\"|\"bar\""
read choice
case $choice in
$string)
echo "You chose $choice";;
*)
echo "Bad choice!";;
esac
Run Code Online (Sandbox Code Playgroud)
我希望能够输入foo或bar执行case语句的第一部分。然而,无论是foo和bar带我去第二:
$ foo.sh
foo
Bad choice!
$ foo.sh
bar
Bad choice!
Run Code Online (Sandbox Code Playgroud)
使用"$string"而不是$string没有区别。使用string="foo|bar".
我知道我可以这样做:
case $choice in
"foo"|"bar")
echo "You chose $choice";;
*)
echo "Bad choice!";;
esac
Run Code Online (Sandbox Code Playgroud)
我可以想到各种解决方法,但我想知道是否可以case在 bash 中使用变量作为条件。是否可能,如果可能,如何?
一个简单脚本的帮助
#!/bin/bash
array1=(
prova1
prova2
slack64
)
a="slack64"
b="ab"
if [ $a = $b ]
then
echo "$a = $b : a is equal to b"
else
echo "$a = $b: a is not equal to b"
fi
Run Code Online (Sandbox Code Playgroud)
这个脚本根本不起作用,我想要一个脚本来检查列表中是否存在 slack64(我使用数组),然后简单地给我,是存在或否。我不知道如何将数组与单个变量进行比较。