gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 08:59:44 24 4
gpt4 key购买 nike

我正在创建一个 bash 脚本,它将包装一个 docker run 命令,并传入所有参数。正在运行的 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 参数,而关联事件不会发生,这可能会让用户感到困惑。

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

最佳答案

将您的测试更改为:

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

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

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

关于bash - 如何在 `-e` bash 变量中包含 `$@` 参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51248721/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com