我正在编写一个脚本,其中会有一些参数,因此我正在使用,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
应该是潜在的文件名,则无需进行验证。任何字符序列都是潜在有效的文件名。