如何在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语句上方。同样有效!