And*_*eas 2 bash sh shellcheck
我在我的脚本上运行shellcheck并且经常收到这个警告(在这种情况下是正确的,因为cd foo bar baz没有意义):
cd ${SOME_DIR} || exit 1
^-- SC2046: Quote this to prevent word splitting.
Run Code Online (Sandbox Code Playgroud)
这个警告主要是一个好的警告。变量包含多个参数时的一种例外情况:
gcc ${OPTIONS} ...
^-- SC2046: Quote this to prevent word splitting.
Run Code Online (Sandbox Code Playgroud)
是否有关于故意分词的约定更明确,可能会避免此 shellcheck 警告?
当没有拆分的意图时,只需添加双引号:
cd "${SOME_DIR}" || exit 1
Run Code Online (Sandbox Code Playgroud)
执行显式拆分为数组:
read -ra gcc_options <<<"${OPTIONS}"
gcc "${gcc_options[@]}"
Run Code Online (Sandbox Code Playgroud)
或者为下一条语句禁用 shellcheck,表示您已检查操作符合意图:
# shellcheck disable=SC2086 # Intended splitting of OPTIONS
gcc ${OPTIONS}
Run Code Online (Sandbox Code Playgroud)