将带有空格的字符串参数从bash脚本传递到该脚本中的命令

时间:2016-06-15 12:38:33

标签: linux bash arguments

我头脑中有点乱,所以我会尽力解释!

我有以下脚本:

#!/usr/bin/env bash

# make, then run
make --quiet

execute_and_echo() { echo "\$ $@" ; "$@" ; }

# add sudo if we need to - and pass all arguments to the target
if [[ $EUID -ne 0 ]]; then
    execute_and_echo sudo ./utility "$@"
else
    execute_and_echo ./utility "$@"
fi

预期目的是使用make构建实用程序,然后运行它(如果我们不是root,则附加sudo),同时将传递给脚本的所有参数传递给实用程序。这主要是有效的,但不是一些命令行参数。

实用程序接受的一个参数是(在极端递归的情况下)从实用程序中运行的另一个shell命令。相信我 - 这对我的申请有意义。该论点的形式可能是:

utility -s "echo banana"

当我直接从命令行运行它时,这工作正常。但是,如果我改为运行

./run -s "echo banana"

报价被剥离,我得到了不受欢迎的行为。有谁知道如何调整这个以获得更好的行为脚本?

0 个答案:

没有答案