【问题标题】:How to check length of an argument in bash script如何检查bash脚本中参数的长度
【发布时间】:2015-06-03 08:28:03
【问题描述】:

如何检查 bash 脚本中参数的长度? 假设参数的长度不应超过 1。

args=("$@")
if [ ${args[0] -gt 1]; then
    echo "Length of arg. 1 must be 1"
fi

但这不能正常工作,因为它会检查 args[0] > 1 而不是 len(args[0] > 1):

./sth.sh 2 1 1 "arg. 1 的长度必须为 1"

LENGTH 为 1,但仍会回显。

我也试过这个:

args=("$@")
if [ ${#args[0] -gt 1]; then
    echo "Length of arg. 1 must be 1"
fi

但是,它没有回显任何内容。

【问题讨论】:

    标签: bash arguments


    【解决方案1】:

    你可以用这个:

    if [ "$#" -ne 1 ]; then
        echo "Illegal number of parameters"
    fi
    
    Or
    
    if test "$#" -ne 1; then
        echo "Illegal number of parameters"
    fi
    

    稍后检查每个参数的长度,如下所示:

    for var in "$@"
    do
       check=${#var}    
        if [ $check -ne 1 ]; then echo "error" ; exit
        fi
    done
    

    【讨论】:

    • 问题是,我必须检查是否有合法数量的参数(在我的情况下 3 和 5 是可以的)+ 如果这 3 或 5 个参数中的任何一个超过 1 的长度。我已经照你说的做了,但现在我还必须检查每个参数的长度。
    • 没错,for 循环可能会起作用,但我该如何回显呢?比方说:for var in args;如果 [ ${#var} -gt 1 ] echo ???
    • 我已经编辑了答案以检查参数的长度。
    • 我检查了您的编辑,它部分有效。但是,我的回声必须如下所示:“{number of arg which length is > 1} 的长度必须为 1。” +exit {长度大于 1 的 arg 的数量}
    • 在外面声明一个变量并将其初始化为1并在循环中递增,您可以使用该变量作为标记来指示参数的位置。
    猜你喜欢
    • 2013-08-17
    • 2010-10-29
    • 1970-01-01
    • 1970-01-01
    • 2015-04-06
    • 1970-01-01
    • 2013-09-05
    • 1970-01-01
    相关资源
    最近更新 更多