在以下shell中,如果未设置LD_LIBRARY_PATH,则错误显示LD_LIBRARY_PATH:未绑定变量.
我可以使用像$ {xxx:-yyy}这样的类似用法来简化它.
#!/bin/bash
set -o nounset
export LD_LIBRARY_PATH=/mypath:$LD_LIBRARY_PATH
Run Code Online (Sandbox Code Playgroud)
Chr*_*n.K 43
你可以使用这个结构:
export LD_LIBRARY_PATH=/mypath${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}
Run Code Online (Sandbox Code Playgroud)
说明:
如果LD_LIBRARY_PATH
未设置,则${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}
在不进行评估的情况下展开为空$LD_LIBRARY_PATH
,因此结果相当于export LD_LIBRARY_PATH=/mypath
并且不会引发错误.
如果LD_LIBRARY_PATH
已经设置,则${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}
扩展为:$LD_LIBRARY_PATH
,因此结果相当于export LD_LIBRARY_PATH=/mypath:$LD_LIBRARY_PATH
.
有关这些扩展的更多信息,请参见Bash参考手册/ 3.5.3 Shell参数扩展.
这是一个重要的安全做法,因为两个相邻的冒号或一个尾随/前导冒号计算为将当前目录添加到$PATH
或$LD_LIBRARY_PATH
.也可以看看: