Bash Case语句:检查字符串是否以数字结尾

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语句中,我想检查“-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"
              ;;
  *)          echo "$1 does not end with a number"
              ;;
esac

这应该行得通。
$1
的具体价值是多少?如果您将
set-x
添加到脚本顶部,您会看到什么?设置
var
的一个更简单的方法是使用
var=${1#--sn}
。set-x完成了我能够找出哪里出了问题的技巧,谢谢。在--sn*语句之前,我已经编写了一个*[0-9]*case语句,它允许任何包含数字的东西(我认为它只允许字符串的严格数字字符通过…)移动到底部,现在它工作正常。谢谢,这就是我要找的。