我希望第一个大小写转换块评估第一个和第三个位置参数。如果未定义第一个位置arg,那么我想转到下一个case-switch块,仅评估第三个位置arg。
我的代码如下:
case "$1" in
X) case "$3" in
-d) if [[ "$4" =~ ^[A-Z]+-[0-9]+$ ]]; then
CreateMarketDir;
SymlinkMarketData;
else
CreateMarketDir;
fi;;
esac
*) echo "Exiting the first Case Block"
exit;;
esac
case "$3" in
-c) if [[ "$4" =~ ^[A-Z]+-[0-9]+$ ]]; then
CreateDCDir;
SymlinkDCData;
else
CreateDCDir;
fi;;
*) echo "Please use a valid argument"
exit;;
esac
但是,只有第一个case-switch块起作用-例如,以下运行OK:
./script.sh X foo -d
但是当我尝试使用以下参数运行时:
./script.sh foo bar -c
我得到此输出:
Please use a valid argument
我假设是,如果第一个位置arg不是X
,则脚本应检查下一个case-switch块并评估第三个位置arg。但显然并非如此。
我应该如何实现对多个大小写转换块的顺序检查?
谢谢
如@Barmar正确指出的那样,问题是第一个esac
丢失了;;
另外,如果脚本应该顺序地通过单独的Case-Switch块,则必须从第一个Case块中删除exit;;
,否则整个脚本将停止