我正在尝试编写一个Bash脚本,该脚本在case语句中使用一个变量作为模式.但是我不能让它上班.
案例陈述:
case "$1" in $test) echo "matched" ;; *) echo "didn't match" ;; esac
我已经尝试使用$test作为aaa | bbb | ccc,(aaa | bbb | ccc),[aaa,bbb,ccc]和其他几种组合.我也尝试过这样的case语句:@($test),@($(echo $test)),$($test).也没有成功.
编辑
为了清楚起见,我希望变量表示多个模式,如下所示:
case "$1" in aaa|bbb|ccc) echo "matched" ;; *) echo "didn't match" ;; esac
您可以使用extglob选项:
原文链接:https://www.f2er.com/bash/386672.html#! /bin/bash shopt -s extglob # enables pattern lists like +(...|...) test='+(aaa|bbb|ccc)' for x in aaa bbb ccc ddd ; do echo -n "$x " case "$x" in $test) echo Matches. ;; *) echo Does not match. esac done