当前目录的 POSIX One-Liner - 尝试使其通过 ShellCheck

当前目录的 POSIX One-Liner - 尝试使其通过 ShellCheck

本次讨论中 mklement0 的一行关于 POSIX 兼容脚本和获取完整路径的内容。 ShellCheck 失败。删除该空间会导致其不再工作。
https://stackoverflow.com/questions/29832037/how-to-get-script-directory-in-posix-sh

dir=$(CDPATH= cd -- "$(dirname -- "$0")" && pwd)
             ^-- SC1007: Remove space after = if trying to assign a value (for empty string, use var='' ... ).

删除CDPATH=ShellCheck 通过的结果,它似乎仍然有效,但是......

CDPATH= 前缀取代了原始命令中的 > /dev/null : $CDPATH 设置为空字符串,以确保 cd 不会回显任何内容。

看来是需要的。那么,有什么办法可以让这个通过ShellCheck呢?或者直接忽略它?

答案1

是的,您可以指定带引号的空值:

dir=$(CDPATH='' cd -- "$(dirname -- "$0")" && pwd)

正如 ShellCheck 所建议的:

(对于空字符串,请使用 var='' ... )

相关内容