如何在 `$@` 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 posix
和 shopt -s xpg_echo
运行时选项。
我正在创建一个 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 posix
和 shopt -s xpg_echo
运行时选项。