Bash中的While循环未运行

Bash中的While循环未运行,bash,while-loop,Bash,While Loop,我对Bash脚本非常熟悉,在运行“while”循环时遇到了麻烦。当我回显关键字时,将打印整个单词列表,然后当我回显长度时,将打印124。我相信我正确地使用了while循环和条件,所以我无法找出我做错了什么。有什么想法吗 keywords=$1 length=${#keywords} echo "$keywords" echo "$length" if [ -z "$keywords" ]; then while [ $length -gt 100 ]; do echo

我对Bash脚本非常熟悉,在运行“while”循环时遇到了麻烦。当我回显
关键字
时,将打印整个单词列表,然后当我回显
长度
时,将打印
124
。我相信我正确地使用了while循环和条件,所以我无法找出我做错了什么。有什么想法吗

keywords=$1
length=${#keywords}

echo "$keywords"
echo "$length"

if [ -z "$keywords" ]; then
    while [ $length -gt 100 ]; do
        echo "$keywords"
        echo "$length"

        keywords="${keywords%,*}"
        length=${#keywords}
    done
fi

echo $keywords
问题在于:

[ -z "$keywords" ]
如果其参数为空字符串,
-z
为真。长度124的东西绝对不是空的。你的意思可能是
-n

下次,请在问题中加入输入,以便我们重现问题。

问题在这里:

[ -z "$keywords" ]
如果其参数为空字符串,
-z
为真。长度124的东西绝对不是空的。你的意思可能是
-n


下次,请在问题中加入输入内容,以便我们重现问题。

如果不需要整个
语句,请填写整个
;如果字符串为空,
[$length-gt 100]
将失败,循环将被跳过。我一定是误读了文档,并将空字符串标志向后设置了。非常感谢。整个
if
语句是不必要的;如果字符串为空,
[$length-gt 100]
将失败,循环将被跳过。我一定是误读了文档,并将空字符串标志向后设置了。非常感谢。