首页 > 解决方案 > 如何将命令及其参数作为单个参数传递给脚本?

问题描述

我有一个用于构建内核的脚本,其中有一个函数我想用它来捕获构建命令中的错误,但我不知道如何将多个参数作为一个参数传递以使其正常工作。语法如下:

run_build() {
cmd=$($1)
status=${PIPESTATUS[0]}
$*
if ($status != 0); then
    echo "$cmd failed!"
    exit 1
else
    echo "$cmd succeeded."
fi
}

问题是,当我尝试传递make带有参数的make命令时,正在执行的命令没有参数。我尝试使用 "$*" 语法来调用所有参数,但它似乎不起作用。一个示例命令是

make O=out -j8 zImage

从脚本调用该行时,我需要包含接下来的 3 个参数。有人有想法吗?

标签: bashvariablespipecommand-line-arguments

解决方案


对此的正确解决方案可能类似于

if "$@"; then
    echo "$@ succeeded" >&2
else
    rc=$?
    echo "$@ failed" >&2
fi

但这似乎仍然像您正在用更糟糕的东西替换完美的内置功能。


推荐阅读