1
我想匹配遵循这个模式的字符串:故障与案例命令在bash
应该有一个
A
,K
,N
或W
则可以随后在一个数字或字母开头范围为a-zA-Z
,如果它有一个字母作为第二个字母,则数字紧跟它,然后它可以有1,2或3个字母。
我尝试这样做:
#!/bin/bash
function callsign() {
echo -e "Insert your call sign"
while true; do
read input
case $input in
[Aa,Kk,Nn,Ww][0-9][a-zA-Z][a-zA-Z]) break;;
[Aa,Kk,Nn,Ww][a-zA-Z][0-9][a-zA-Z]) break;;
[Aa,Kk,Nn,Ww][a-zA-Z][0-9][a-zA-Z][a-zA-Z]) break;;
[Aa,Kk,Nn,Ww][0-9][a-zA-Z][a-zA-Z][a-zA-Z]) break;;
[Aa,Kk,Nn,Ww][0-9][a-zA-Z][a-zA-Z][a-zA-Z][a-zA-Z]) break ;;
*) echo "please insert valid call sign.";;
esac
done
clear
}
callsign
我有问题,因为我有太多的情况下,(可是并没有包括所有这些)。我怎样才能以更好的方式解决这个问题?
修正了您的编辑错误('#!/ bin/bash')作为编辑的一部分 – Inian
您的glob [[Aa,Kk,Nn,WW]'看起来很可疑(虽然没有语法错误,但可能会显示一些误解)...你想要完全匹配什么? –
我很好奇关于表面上任意使用大写的问题。 –