shell - if [ "x"!= x ] 在 bash 中会怎样?

标签 shell

我正在查看virtualenv的源代码,激活脚本包含以下代码:

if [ -z "$VIRTUAL_ENV_DISABLE_PROMPT" ] ; then  
    _OLD_VIRTUAL_PS1="$PS1"    
    if [ "x" != x ] ; then
        PS1="$PS1"
    else 
    if [ "`basename \"$VIRTUAL_ENV\"`" = "__" ] ; then
        # special case for Aspen magic directories
        # see http://www.zetadev.com/software/aspen/
        PS1="[`basename \`dirname \"$VIRTUAL_ENV\"\``] $PS1"
    else
        PS1="(`basename \"$VIRTUAL_ENV\"`)$PS1"
    fi
    fi
    export PS1
fi

什么行if [ "x" != x ]做? x 未在脚本中的其他任何地方定义。

最佳答案

在 Bash 中,该测试肯定会失败; [ "x" != x ]总是返回非零退出状态(即“假”),因为 "x"x都是由单个字符 x 组成的字符串. (在这种情况下,引号实际上没有任何作用。)

更重要的是,命令PS1="$PS1"也没有真正做任何事情:它只是设置变量 PS1等于它已经拥有的值(value)。

我猜这个脚本是以某种方式自动生成的,并且在某些系统上,这些语句看起来有点不同,而且没那么无用。

关于shell - if [ "x"!= x ] 在 bash 中会怎样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13976472/

相关文章:

shell - 重启后 chmod -> 权限更改

Shell 脚本与编程语言

linux - 可以将 10 个相似的函数变成一个 for 循环吗?

linux - Bash 函数在文档顶部定义时执行?

svn - 我怎样才能使用 MSBuild 来(真正)运行 AfterPublish

linux - 在当前目录运行 expect 脚本

linux - 用于创建文件夹和移动文件的“管家”脚本

shell - 如何自动将zipfile从本地文件系统复制到HDFS

ruby - 使用 Ruby 查找早于 X 小时的文件

bash - 如何在 Gvim 的后台运行一个进程?