在 bash shell 脚本中检查字符串是否仅包含数字的比较问题
Problem with comparison for checking that a string contains only digits in a bash shell script
我不得不修改 bash shell 脚本,但我对 bash shell 脚本没有太多经验(我与许多其他人合作过语言,但与 shell 脚本编写的关系不大)。
脚本显示包含“X”项的菜单,然后提示用户输入数字。
用户输入数字后,我认为脚本会检查输入的 number/string 以确保它是一个数字(我认为),然后检查数字是否在值范围内.
我想改变的部分是菜单中的项目数量,原本有 9 个项目,但我需要再添加 10 个左右。如果输入的数字超过 1 位,则看起来检查失败。
这是它进行检查的片段:
while menu && read -rp "$prompt" num && [[ "$num" ]]; do
if [[ "$num" == [[:digit:]] ]] && [[ $num -gt 0 ]] && [[ $num -le ${#service_accounts[@]} ]]; then
我认为失败的“if”部分是:
[[ "$num" == [[:digit:]] ]]
谁能告诉我,如果 $num 中的字符串超过 1 位,比较是否会失败?
另外,如果是这种情况,即使 $num 超过 1 位数,我如何更改该比较以使其正常工作?
抱歉,如果这是一种奇怪的问题 :(!! 还有,提前致谢!
吉姆
[[ "$num" == [[:digit:]] ]]
除了一个数字以外的所有内容都失败。
这使您的脚本能够接受一到两位数的数字:
[[ "$num" =~ ^[[:digit:]]{1,2}$ ]]
=~
将 $num 与正则表达式 ^[[:digit:]]{1,2}$
.
进行比较
参见:The Stack Overflow Regular Expressions FAQ
我不得不修改 bash shell 脚本,但我对 bash shell 脚本没有太多经验(我与许多其他人合作过语言,但与 shell 脚本编写的关系不大)。
脚本显示包含“X”项的菜单,然后提示用户输入数字。
用户输入数字后,我认为脚本会检查输入的 number/string 以确保它是一个数字(我认为),然后检查数字是否在值范围内.
我想改变的部分是菜单中的项目数量,原本有 9 个项目,但我需要再添加 10 个左右。如果输入的数字超过 1 位,则看起来检查失败。
这是它进行检查的片段:
while menu && read -rp "$prompt" num && [[ "$num" ]]; do
if [[ "$num" == [[:digit:]] ]] && [[ $num -gt 0 ]] && [[ $num -le ${#service_accounts[@]} ]]; then
我认为失败的“if”部分是:
[[ "$num" == [[:digit:]] ]]
谁能告诉我,如果 $num 中的字符串超过 1 位,比较是否会失败?
另外,如果是这种情况,即使 $num 超过 1 位数,我如何更改该比较以使其正常工作?
抱歉,如果这是一种奇怪的问题 :(!! 还有,提前致谢!
吉姆
[[ "$num" == [[:digit:]] ]]
除了一个数字以外的所有内容都失败。
这使您的脚本能够接受一到两位数的数字:
[[ "$num" =~ ^[[:digit:]]{1,2}$ ]]
=~
将 $num 与正则表达式 ^[[:digit:]]{1,2}$
.
参见:The Stack Overflow Regular Expressions FAQ