在shell脚本中使用if的多个条件

时间:2018-07-22 03:03:56

标签: shell unix scripting

我想检查单个if条件中是否存在文件以及第4行的行数。任何人都可以在这里帮忙。

if [[ -f report]] && [[`wc -l report` -eq 4 ]]; then
    echo " Proceed further"
else
    exit 1
fi

1 个答案:

答案 0 :(得分:1)

这更简单:

{ [ `wc -l < report` -eq 4 ] || exit; } 2>/dev/null 
echo " Proceed further"

注意:

  • 如果 report 存在并且为 4 行,则wc -l report 返回:

    4 report
    

    ... -eq无法理解。而是wc -l < report 输出-eq友好:

    4
    
  • 由于<重定向,因此无需检查报告是否存在 无论如何都会这样做,并返回相同的错误代码。

  • 更具体的退出代码。如果 report 不存在,则退出代码为 2 。如果 report 长为 5 行,则退出代码为 1