2016-09-17 103 views
0

我很新的Bash脚本,并且无法让我的'while'循环运行。当我回显keywords时,会打印出一整个单词列表,然后当我回显length时,它会打印124。我相信我正在使用while循环和正确的条件,所以我无法弄清楚我做错了什么。有什么想法吗?虽然循环在Bash没有运行

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 

回答

2

的问题是在这里:如果它的参数是一个空字符串

[ -z "$keywords" ] 

-z是真实的。长度为124的东西绝对不是空的。你可能意思是-n

下一次,请还包括问题中的输入,以便我们可以重现问题。

+1

整个'if'语句是不必要的;如果字符串为空,'[$ length -gt 100]'将失败,循环将被忽略。 – chepner

+0

我必须误读文档并将空字符串标志向后。谢谢! –