虽然循环在Bash没有运行
问题描述:
我很新的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
答
的问题是在这里:如果它的参数是一个空字符串
[ -z "$keywords" ]
-z
是真实的。长度为124的东西绝对不是空的。你可能意思是-n
。
下一次,请还包括问题中的输入,以便我们可以重现问题。
整个'if'语句是不必要的;如果字符串为空,'[$ length -gt 100]'将失败,循环将被忽略。 – chepner
我必须误读文档并将空字符串标志向后。谢谢! –