Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在bashshell脚本中检查字符串是否只包含数字时存在比较问题_Bash_Shell_Scripting - Fatal编程技术网

在bashshell脚本中检查字符串是否只包含数字时存在比较问题

在bashshell脚本中检查字符串是否只包含数字时存在比较问题,bash,shell,scripting,Bash,Shell,Scripting,我必须修改bashshell脚本,但我没有太多的bashshell脚本编写经验(我曾使用过许多其他语言,但没有太多的shell脚本编写经验) 该脚本显示一个包含“X”项的菜单,然后提示用户输入一个数字 用户输入数字后,我认为脚本会检查输入的数字/字符串,以确保它是一个数字(我认为),然后检查数字是否在值的范围内 我想改变的一部分是菜单中的项目数量,最初有9个项目,但我需要再添加10个左右。如果输入的数字超过1位,则检查似乎失败 下面是它执行检查的代码段: while menu &&

我必须修改bashshell脚本,但我没有太多的bashshell脚本编写经验(我曾使用过许多其他语言,但没有太多的shell脚本编写经验)

该脚本显示一个包含“X”项的菜单,然后提示用户输入一个数字

用户输入数字后,我认为脚本会检查输入的数字/字符串,以确保它是一个数字(我认为),然后检查数字是否在值的范围内

我想改变的一部分是菜单中的项目数量,最初有9个项目,但我需要再添加10个左右。如果输入的数字超过1位,则检查似乎失败

下面是它执行检查的代码段:

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}$

见: