测试变量是否为字符串

测试变量是否为字符串

我正在编写一个脚本,其中会有一些参数,因此我正在使用,getopts 但我想用一个参数来解决问题。

例如,我使用开关-d,我希望 的参数-d是目录的路径,例如./work

我想测试用户输入的字符串或路径,而不是数字。有什么办法可以解决这个问题吗?我想用类似的方法来解决它:

If (test)
  then echo it is string
else 
  echo it is not string       

答案1

每个变量都是一个字符串。

如果您想区分“是数字”和“不是数字”,请进行测试。

while getopts d: OPTLET; do
  case "$OPTLET" in
    d)
      case "$OPTARG" in
        *[!0-9]*) echo 1>&2 "Non-numeric argument to -d, stopping."; exit 2;;
        *) number_of_foo=$OPTARG;;
      esac;;
  esac
done

从你的问题中并不清楚这是否是你真正想要的。一个号码一个字符串。123是有效的文件名。因此,如果 的参数-d应该是潜在的文件名,则无需进行验证。任何字符序列都是潜在有效的文件名。

相关内容