Shell "set" Linux 和 MacOS 中的命令
Shell "set" command in Linux and MacOS
我偶然发现了 2 个操作系统的 set
实现之间的细微差别。
当运行:
#!/bin/sh
set -eu
echo "${@}"
运行 这在 MacOS 上给出了以下错误:
@: unbound variable
而 运行 这在 Linux 环境中,结果没有错误,但回显一个空字符串。
除了将 ${@}
更改为 ${@:-}
之外,是否可以通过某种方式解决此问题,因为如果在代码中检查参数数量,这可能会导致不同的结果。
我偶然发现了 2 个操作系统的 set
实现之间的细微差别。
当运行:
#!/bin/sh
set -eu
echo "${@}"
运行 这在 MacOS 上给出了以下错误:
@: unbound variable
而 运行 这在 Linux 环境中,结果没有错误,但回显一个空字符串。
除了将 ${@}
更改为 ${@:-}
之外,是否可以通过某种方式解决此问题,因为如果在代码中检查参数数量,这可能会导致不同的结果。