如何在 `$@` bash 变量中包含 `-e` 参数?

How to include the `-e` argument in the `$@` bash variable?

我正在创建一个 bash 脚本,它将包装一个 docker 运行 命令,并传入所有参数。 docker cmd 运行 有一个 -e 参数,如下所示:

docker run --rm -it --name some_name -v $(pwd):/some_dir some_image some_command -e -r -t

但是,bash 脚本出于某种原因没有传递 -e 参数。

例如我有以下 test.sh 脚本。

#!/bin/bash
echo "Echoing the command arguments."
echo $@

-e 参数在第一个位置时不会传递给 $@

$ ./test.sh -e -r -t
Echoing the command arguments.
-r -t

$ ./test.sh -r -e -t
Echoing the command arguments.
-r -e -t

最终我希望能够按如下方式调用 docker 命令,只需将 bash 脚本中的所有给定参数传递给 docker 命令即可。

docker run --rm -it --name some_name -v $(pwd):/some_dir some_image some_command $@

如果用户希望传入 -e 参数而关联 activity 没有发生,这可能会让用户感到困惑。

有没有办法让-e参数通过?

将您的测试更改为:

#!/bin/bash
echo "Echoing the command arguments:"
printf ' - %q\n' "$@"

...你会看到 -e 出现。

A POSIX-conforming 实现 echo 将在输出中打印 -e 当给定该字符串作为其第一个参数时。 bash 的实现不符合要求,除非同时设置 set -o posixshopt -s xpg_echo 运行时选项。