我想寫一個Bash腳本,它在case語句中使用變量作爲模式。但是我無法讓它工作。在變量中使用變量作爲案例模式
案例聲明:
case "$1" in
$test)
echo "matched"
;;
*)
echo "didn't match"
;;
esac
我已經與分配$test
爲aaa|bbb|ccc
,(aaa|bbb|ccc)
,[aaa,bbb,ccc]
和其他幾個組合嘗試這個。我也試過這些案例陳述中的模式:@($test)
,@($(echo $test))
,$($test)
。也沒有成功。
編輯
爲清楚起見,我想的變量來表示這樣的多模式:
case "$1" in
aaa|bbb|ccc)
echo "matched"
;;
*)
echo "didn't match"
;;
esac
+1提醒我使用'extglob'。順便說一句'test ='@(aaa | bbb | ccc)''也可以,在這種情況下可能是更好的選擇。 – anubhava
這太棒了!謝謝! @anubhava爲什麼你的建議會更好(@而不是+)? – siebz0r
@anubhava沒關係,在[這裏]找到它(https://www.gnu.org/software/bash/manual/html_node/Pattern-Matching.html#Pattern-Matching)。 @匹配一個匹配項,+匹配多個匹配項。 – siebz0r