在bashshell脚本中检查字符串是否只包含数字时存在比较问题
我必须修改bashshell脚本,但我没有太多的bashshell脚本编写经验(我曾使用过许多其他语言,但没有太多的shell脚本编写经验) 该脚本显示一个包含“X”项的菜单,然后提示用户输入一个数字 用户输入数字后,我认为脚本会检查输入的数字/字符串,以确保它是一个数字(我认为),然后检查数字是否在值的范围内 我想改变的一部分是菜单中的项目数量,最初有9个项目,但我需要再添加10个左右。如果输入的数字超过1位,则检查似乎失败 下面是它执行检查的代码段:在bashshell脚本中检查字符串是否只包含数字时存在比较问题,bash,shell,scripting,Bash,Shell,Scripting,我必须修改bashshell脚本,但我没有太多的bashshell脚本编写经验(我曾使用过许多其他语言,但没有太多的shell脚本编写经验) 该脚本显示一个包含“X”项的菜单,然后提示用户输入一个数字 用户输入数字后,我认为脚本会检查输入的数字/字符串,以确保它是一个数字(我认为),然后检查数字是否在值的范围内 我想改变的一部分是菜单中的项目数量,最初有9个项目,但我需要再添加10个左右。如果输入的数字超过1位,则检查似乎失败 下面是它执行检查的代码段: while menu &&
while menu && read -rp "$prompt" num && [[ "$num" ]]; do
if [[ "$num" == [[:digit:]] ]] && [[ $num -gt 0 ]] && [[ $num -le ${#service_accounts[@]} ]]; then
我认为“如果”的失败部分是:
[[ "$num" == [[:digit:]] ]]
有人能告诉我如果$num中的字符串超过1位,比较是否会失败吗
而且,如果是这样的话,即使$num超过1位,我如何更改该比较以正确工作
抱歉,如果这是一种奇怪的问题:(!!并且,提前感谢
Jim[[“$num”=[[:digit:][]]]
除了一个数字之外,其他所有数字都失败
这使脚本能够接受一到两位数的数字:
[[ "$num" =~ ^[[:digit:]]{1,2}$ ]]
=~
将$num与regex进行比较^[:digit:]{1,2}$
请参阅:[[“$num”==[[:digit:][]]]
除了一个数字之外,所有操作都失败
这使脚本能够接受一到两位数的数字:
[[ "$num" =~ ^[[:digit:]]{1,2}$ ]]
=~
将$num与regex进行比较^[:digit:]{1,2}$
见: