Linux 检查shell脚本得到的参数类型

Linux 检查shell脚本得到的参数类型,linux,bash,shell,glob,Linux,Bash,Shell,Glob,我的shell脚本需要一些帮助。我有这个: #!/bin/bash for i in $* do if [[ $i = *[a-zA-Z] ]] then echo $i contains just letters. elif [[ $i = *[a-zA-Z0-9] ]] then echo $i contains numbers and letters. else echo Error. done 例如,我希望结果是: $ ./scr

我的shell脚本需要一些帮助。我有这个:

#!/bin/bash

for i in $*
do
   if [[ $i = *[a-zA-Z] ]]
      then echo $i contains just letters.
   elif [[ $i = *[a-zA-Z0-9] ]]
      then echo $i contains numbers and letters.
   else
      echo Error.
done
例如,我希望结果是:

$ ./script.sh abCd a9d a-b
abCd contains just letters.  
a9d contains numbers and letters.  
Error.
但我得到的
在任何情况下都只包含字母


我也尝试了grep命令,但没有成功。

您的正则表达式是错误的。请尝试以下操作:

#!/bin/bash

for i in $*
do
   if [[ $i =~ ^[a-zA-Z]+$ ]]
      then echo $i contains just letters.
   elif [[ $i =~ ^[a-zA-Z0-9]+$ ]]
      then echo $i contains numbers and letters.
   else
      echo Error.
   fi
done

@汤姆很高兴我能帮忙。感谢您发布一个包含完整代码和有用测试用例的问题。给您的程序一点提示:第二种情况只检查字符串中是否至少有一个字符。因此,如果您只使用一个数字作为输入,它仍然会输出“9包含数字和字母”。当只使用一个数字作为输入时,有一个小小的语义问题。