如何在bash中为变量赋值if语句?

时间:2017-09-28 07:54:58

标签: bash shell jenkins

我有一个在我的脚本中多次使用的if语句:

if [[ $? -ne 0 ]]; then
        echo [$JOB_NAME] failed.
        exit 1
    fi

是否可以定义变量并将此语句赋值给它,然后每次需要ti时调用它?

使用示例:

echo [$JOB_NAME] extracting manifests...
    unzip -o ZIP_FILE "*.yml"
    # Push the app to CF
    cf push -f $MANIFEST_FILE -p ZIP_FILE $NEW_APP 
    if [[ $? -ne 0 ]]; then
        echo [$JOB_NAME] failed.
        exit 1
    fi

1 个答案:

答案 0 :(得分:2)

正如评论中所提到的,这应该是一个函数,可以这样写:

ensure_success () {
    if [[ $# -eq 0 ]]; then
        echo "no command passed to ensure_success."
    elif ! "$@"; then
        echo "[$JOB_NAME] failed."
        exit 1
    fi
}

"$@"扩展为传递给函数的参数的完整列表。我在评论中添加了一个基于Inian建议的检查,以确保至少有一个参数传递给函数。

这结合了运行命令和检查错误代码,因此你可以使用它:

ensure_success command arg1 arg2 arg3

因此,基于您问题中的示例,它将是:

ensure_success cf push -f "$MANIFEST_FILE" -p ZIP_FILE "$NEW_APP"

报价是免费的。

我不确定定义$JOB_NAME的位置,但可能是全球性的。