Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.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
验证bash脚本输入_Bash - Fatal编程技术网

验证bash脚本输入

验证bash脚本输入,bash,Bash,我刚开始使用Linux作为我计算机科学学位的一部分 我正在写一些非常简单的Bash脚本,我有点被卡住了 我希望我尝试编写的脚本能够区分“无效输入即字母”和“特定范围内的有效输入即数字” 目前脚本“有效”,尽管我遇到了另一个回音的问题,我只想在下面的一行是“不正确”时“回音”,但有没有一个简单的方法来写这个?我不是专门寻找高效的代码,只是我可以从业余水平上学习和理解的代码 那么,长话短说,有没有可能从下面的命令行获取信息,这样我就可以有一个简单的“not true”变量,可以在另一个“else”或

我刚开始使用Linux作为我计算机科学学位的一部分

我正在写一些非常简单的Bash脚本,我有点被卡住了

我希望我尝试编写的脚本能够区分“无效输入即字母”和“特定范围内的有效输入即数字”

目前脚本“有效”,尽管我遇到了另一个回音的问题,我只想在下面的一行是“不正确”时“回音”,但有没有一个简单的方法来写这个?我不是专门寻找高效的代码,只是我可以从业余水平上学习和理解的代码

那么,长话短说,有没有可能从下面的命令行获取信息,这样我就可以有一个简单的“not true”变量,可以在另一个“else”或“elif”命令中使用

参考资料第1行是检测字母输入,第2行是我想写为“nottrue”的代码行,用于脚本的另一部分

  • 设xx=$a+1-12>/dev/null;ret=$

  • 如果[$a-ge 7]&&&[$a-le 70]&&[$xx-eq$xx]&&&[$ret-eq 0]


  • 我不确定我是否解释得很好,因此任何帮助都将不胜感激。:)

    欢迎使用堆栈溢出。:)

    从阅读文档开始。我并不是说要卑鄙,这只是最好的方法。
    c、 f

    然后通读这本书

    而且,这个网站真的是你的朋友。从熟悉你自己开始

    对于你的问题,如果我读对了:

    typeset -i xx # accepts only digits now.
    
    如果输入是
    foo
    ,则该值默认为0,因此现在只需检查范围

    if (( xx >= 7 && xx <= 70 )); then : value is ok
    else echo "Value must be a number from 7 to 70"
         exit 1
    fi
    

    if((xx>=7&&xx欢迎使用堆栈溢出:)

    从阅读文档开始。我的意思不是说要刻薄,这只是最好的方法。
    c、 f

    然后通读这本书

    而且,这个网站真的是你的朋友。从熟悉你自己开始吧

    对于你的问题,如果我读对了:

    typeset -i xx # accepts only digits now.
    
    如果输入是
    foo
    ,则该值默认为0,因此现在只需检查范围

    if (( xx >= 7 && xx <= 70 )); then : value is ok
    else echo "Value must be a number from 7 to 70"
         exit 1
    fi
    
    如果((xx>=7&&xx带有整数属性的变量)的一个问题是它仍然不能保护您免受无效输入的影响:

    $declare-i一个成员
    $aNumber=1234X
    bash:1234X:值对于base太大(错误标记为“1234X”)
    
    有关bash如何将值解释为数字的信息,请参见(向下滚动至以“整数常量遵循C语言定义”开头的段落)

    根据我的经验,检查有效数字输入的最佳方法是使用面向字符串的模式匹配

    如果[[$1=~^[+-]?[0-9]+$];那么
    echo“输入$1是一个整数”
    fi
    
    除了扩展正则表达式之外,bash还可以在
    […]]

    如果[[$1==?([+-])+([0-9])];那么
    echo“输入$1是一个整数”
    fi
    

    (…)
    优于
    let
    。有关详细信息,请参阅。 另外。

    带有整数属性的变量的一个问题是,它仍然不能保护您免受无效输入的影响:

    $declare-i一个成员
    $aNumber=1234X
    bash:1234X:值对于base太大(错误标记为“1234X”)
    
    有关bash如何将值解释为数字的信息,请参见(向下滚动至以“整数常量遵循C语言定义”开头的段落)

    根据我的经验,检查有效数字输入的最佳方法是使用面向字符串的模式匹配

    如果[[$1=~^[+-]?[0-9]+$];那么
    echo“输入$1是一个整数”
    fi
    
    除了扩展正则表达式之外,bash还可以在
    […]]

    如果[[$1==?([+-])+([0-9])];那么
    echo“输入$1是一个整数”
    fi
    

    (…)
    优于
    let
    。有关详细信息,请参阅。
    另外。

    始终在
    [..]
    中引用变量(在
    [[..]
    中没有必要),但在
    [..]
    中必须引用变量。(
    [..]
    测试的别名。
    要在为
    xx
    输入非整数时抑制错误,您可以
    [“$xx”-eq”$xx“2>/dev null]
    stderr
    重定向到
    /dev/null
    (位桶…)值得为指南添加书签,尤其是陷阱
    :)
    与花一点时间在一起是很好的。除了其他人链接的信息宝库外,单击问题下的
    bash
    标记,然后单击stackoverflow上的bash标记wiki的“了解更多…”。@JB:我会通过执行
    [[$a==*[a-Za-z]*]
    。检查
    a
    是否包含任何非数字字符可以通过
    [$a==*[^0-9]*]]
    来完成。始终在
    [..]
    中引用变量(在
    [[..]]
    中没有必要),但在
    [..]
    中它是必需的。(
    [..]
    测试的别名)。若要在为
    xx
    输入非整数时抑制错误,您可以
    [“$xx”-eq“$xx”2>/dev/null]
    stderr
    重定向到
    /dev/null
    (位桶…)值得将指南和(尤其是陷阱
    :)
    与花一点时间在一起是很好的。除了其他人链接的信息宝库外,单击问题下的
    bash
    标记,然后单击stackoverflow上的bash标记wiki的“了解更多…”。@JB:我会通过执行
    [[$a==*[a-Za-z]*]
    。检查
    a
    是否包含任何非数字字符可以通过
    [[$a==*[^0-9]*]]
    完成。注意:此方法将允许一些奇数项通过-例如,分配
    xx=0xdeadbeef
    实际上将存储
    3735928559
    ,因为