如何在Bash字符串中使用速记形式执行if/else?

如何在Bash字符串中使用速记形式执行if/else?,bash,Bash,无需键入另一个if/else语句块,我如何在字符串中实现这一点 我希望避免必须根据布尔值设置措辞。脚本的输出将cronjob\u status作为布尔值,它依次根据true/false值执行操作。我需要保留通过stdin为cronjob\u status传递的布尔值,并打印正确的单词 if [ "${cronjob_status}" == True ]; then cronjob_status_display = "enable" else cronjob_status_disp

无需键入另一个
if/else
语句块,我如何在字符串中实现这一点

我希望避免必须根据布尔值设置措辞。脚本的输出将
cronjob\u status
作为布尔值,它依次根据
true/false
值执行操作。我需要保留通过stdin为
cronjob\u status
传递的布尔值,并打印正确的单词

if [ "${cronjob_status}" == True ]; then
    cronjob_status_display = "enable"
else
    cronjob_status_display = "disable"
fi



if [ $? -eq 0 ]
then
    echo "Successfully ${cronjob_status_display} the cronjob"
else
    echo "Could not create cronjob" >&2
fi

添加短路评估,
和&

if [ $? -eq 0 ] && [ "${cronjob_status}" == True ]; then
    echo "OK"
else
    echo "NOT OK" >&2
fi

如果使用
bash
内置
[[
,则也可以将其编写为:

if [[ $? -eq 0 && ${cronjob_status} == True ]]; then
    echo "OK"
else
    echo "NOT OK" >&2
fi

作为旁注,您不一定需要使用
$?
检查退出状态,您可以运行该命令并在之后立即检查,例如,如果该命令是例如
/foo/bar
,您可以执行以下操作:

if /foo/bar &>/dev/null && [[ ${cronjob_status} == True ]]; then
    echo "OK"
else
    echo "NOT OK" >&2
fi

添加短路评估,
和&

if [ $? -eq 0 ] && [ "${cronjob_status}" == True ]; then
    echo "OK"
else
    echo "NOT OK" >&2
fi

如果使用
bash
内置
[[
,则也可以将其编写为:

if [[ $? -eq 0 && ${cronjob_status} == True ]]; then
    echo "OK"
else
    echo "NOT OK" >&2
fi

作为旁注,您不一定需要使用
$?
检查退出状态,您可以运行该命令并在之后立即检查,例如,如果该命令是例如
/foo/bar
,您可以执行以下操作:

if /foo/bar &>/dev/null && [[ ${cronjob_status} == True ]]; then
    echo "OK"
else
    echo "NOT OK" >&2
fi
一行:

[[ $? -eq 0 ]] && echo "Successfully ${cronjob_status} the cronjob" || echo "Could not create cronjob" >&2
一行:

[[ $? -eq 0 ]] && echo "Successfully ${cronjob_status} the cronjob" || echo "Could not create cronjob" >&2
您可以使用:

[[ $cronjob_status == True ]] && 
   cronjob_status_display=enable || cronjob_status_display=disable
您可以使用:

[[ $cronjob_status == True ]] && 
   cronjob_status_display=enable || cronjob_status_display=disable

if
条件之前,您有什么命令?我运行的是一个外部脚本。
cronjob\u status
通过stdin作为布尔值传递。如果为真,我想打印
enable
,但如果为假,我想打印
disable。
我需要将布尔值传递到另一个函数中,但文本应该按顺序打印gly(不是
true
false
)。在
$?
上写条件很少有用(例外情况是在特定条件下使用不同的故障代码,但即使如此,
如果(($?==2))…
不正常,您可以在变量中保存$?,或者使用case语句。)。如果您只想检查某个命令是否成功,请直接执行:
如果某个命令有一些参数;然后……否则……fi
如果
条件之前有什么命令?这是我运行的外部脚本。
cronjob\u status
通过stdin作为布尔值传递。如果是真的,我想打印
enable
但是如果它为false,我想打印
禁用。
我需要将布尔值传递到另一个函数中,但是文本应该相应地打印(而不是
true
false
)。在
$?
上写条件很少有用(例外情况是在特定条件下使用不同的故障代码,但即使如此,
if(($?==2))…
也是不寻常的;您可以将$?保存在变量中或使用case语句。)。如果您只想检查某个命令是否成功,请直接执行:
如果某个命令成功;然后……否则……fi
谢谢。我正在尝试将所有内容插入一行(在echo语句中)。我最终使用了你的答案,并将其放在echo语句上方。同样有效!谢谢。我试图将所有内容插入一行(在echo语句中)。我最终使用了你的答案,并将其放在echo语句上方。同样有效!