首页 > 解决方案 > || && 运算符打印真假输出

问题描述

我正在编写一个脚本,该脚本将计算文件中的行数,如果少于 1 行,它将不会运行我的“blender”脚本。

有人可以确认我对操作员工作的误解,因为它运行我的脚本,无论它是否真实,但奇怪的是它之前的 echo 命令。

如果有人可以告诉我如何在语句中包含变量,而无需将它们分配为变量,则可以加分。我尝试了很多不同的方法,但每次都会吐出错误。

代码

placement="$(wc -l array/placement-array.tsv | awk '{print $1}')"
advertiser="$(wc -l array/advertiser-array.tsv | awk '{print $1}')"

[ $placement -lt 1 ] && echo "This email doesn't appear to have placement" || echo "this file has a placement, running placement script" && ./scripts/placement_blender.sh && echo "placement script run"
[ $advertiser -lt 1 ] && echo "This email doesn't appear to have advertiser" || echo "this file has a advertiser, running advertiser script" && ./scripts/advertiser_blender.sh && echo "advertiser script run"

输出

    + awk {print $1}
    + wc -l array/placement-array.tsv
    + placement=1
    + awk {print $1}
    + wc -l array/advertiser-array.tsv
    + advertiser=0
    + [ 1 -lt 1 ]
    + echo this file has a placement, running placement script 
    this file has a placement, running placement script
    + ./scripts/placement_blender.sh
    + echo placement script run 
    placement script run
    + [ 0 -lt 1 ]
    + echo This email doesn't appear to have advertiser 
    This email doesn't appear to have advertiser
    + ./scripts/advertiser_blender.sh
    + echo advertiser script run 
    advertiser script run

标签: bashshellif-statement

解决方案


推荐阅读