我头脑中有点乱,所以我会尽力解释!
我有以下脚本:
#!/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"
报价被剥离,我得到了不受欢迎的行为。有谁知道如何调整这个以获得更好的行为脚本?