参见英文答案 >
Why do shell script comparisons often use x$VAR = xyes?7个
我正在窥视一些shell脚本 – 在comarison shcu中x的目的是什么
我正在窥视一些shell脚本 – 在comarison shcu中x的目的是什么
if [ "x$USER" != "x$RUN_AS_USER" ]; then su - $RUN_AS_USER -c "$CATALINA_HOME/bin/startup.sh" else $CATALINA_HOME/bin/startup.sh fi
如果其中一个变量为空,那么确保在替换中不会得到空字符串是一种技巧.通过在两侧放置x,它只是直接比较变量,但双方总是非空的.
这是一个旧的kludge,当脚本编写为:
if [ x$USER != x$RUN_AS_USER ]
如果你只有$USER并且它是空的那么你可能最终得到
if [ != root ] # Syntax error
使用x,你得到这个,这是更好的:
if [ x != xroot ]
但是,当引用变量时,x是不必要的,因为引号中的空字符串不会被完全删除.它仍然显示为令牌.从而
if [ "$USER" != "$RUN_AS_USER" ] # Best
写这个是最好的方法.在两个变量都为空的最坏情况下,你会得到这个有效的声明:
if [ "" != "" ]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。