if条件 - bash test




shell脚本:if语句 (2)

wc -l file命令将打印两个单词。 尝试这个:

lines=`wc -l file | awk '{print $1}'`

要调试bash脚本(boot.sh),您可以:

$ bash -x ./boot.sh

它会打印每一行执行。

我在这里按照教程: http : //bash.cyberciti.biz/guide/If..else..fi#Number_Testing_Script

我的脚本看起来像:

lines=`wc -l $var/customize/script.php`
if test $lines -le 10
then
    echo "script has less than 10 lines"
else
    echo "script has more than 10 lines"
fi

但我的输出如下所示:

./boot.sh: line 33: test: too many arguments
script has more than 10 lines

为什么说我有太多的论点? 我没有看到我的脚本与教程中的不同。


另外,你应该使用

if [[ $lines -gt 10 ]]; then
    something
else
  something
fi

test condition实在是过时了,它也是直接的后继, [ condition ] ,主要是因为你必须非常小心这些形式。 例如,你必须引用任何你通过test $var或者[ ] ,还有其他的细节会变得很糟糕。 (测试像任何其他命令一样被以各种方式处理)。 看看这篇文章的一些细节。





if-statement