Bash Case语句:检查字符串是否以数字结尾
在case语句中,我想检查“-sn”命令后面是否跟有一个数字(1-254)。 我想我应该只使用--sn*,但显然*不适用于数字Bash Case语句:检查字符串是否以数字结尾,bash,scripting,numbers,case,Bash,Scripting,Numbers,Case,在case语句中,我想检查“-sn”命令后面是否跟有一个数字(1-254)。 我想我应该只使用--sn*,但显然*不适用于数字 case "$1" in --sn* ) var=$(echo $1 | cut -dn -f2 ) ;; * ) break ;; esac 你知道怎么做吗?试试这个: #!/bin/bash case "$1" in --sn*[0-9]) echo "$1 ends with a number"
case "$1" in
--sn* ) var=$(echo $1 | cut -dn -f2 )
;;
* ) break ;;
esac
你知道怎么做吗?试试这个:
#!/bin/bash
case "$1" in
--sn*[0-9]) echo "$1 ends with a number"
;;
*) echo "$1 does not end with a number"
;;
esac
这应该行得通。
$1
的具体价值是多少?如果您将set-x
添加到脚本顶部,您会看到什么?设置var
的一个更简单的方法是使用var=${1#--sn}
。set-x完成了我能够找出哪里出了问题的技巧,谢谢。在--sn*语句之前,我已经编写了一个*[0-9]*case语句,它允许任何包含数字的东西(我认为它只允许字符串的严格数字字符通过…)移动到底部,现在它工作正常。谢谢,这就是我要找的。