LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 888|回复: 6

帮帮看下test命令

[复制链接]
发表于 2007-12-10 18:39:58 | 显示全部楼层 |阅读模式
if test "x`ls $QPEDIR/lib/libqpe.* 2> /dev/null`" != x ; then
里面的x是什么意思啊。。搞不懂给
发表于 2007-12-10 19:03:09 | 显示全部楼层
x没有任何特殊的含义,可以把x换成其他的字符,使用x只不过是一个惯例罢了。如果那个命令替换的输出不为空,两边不等,test命令的结果就为真,如果命令替换的输出为空,两边都是x,结果就为假了。
回复 支持 反对

使用道具 举报

发表于 2007-12-11 08:51:26 | 显示全部楼层
补充一下二楼.

这里的 x 是为了避免变量为空的问题, 比如 if test $var!=""; then...... 这样的代码在 $var 未定义的时候会导致语法错误, 因为语句会变成 if test !=""; then.... 所以加上一个修饰符就可以避免这样的问题
回复 支持 反对

使用道具 举报

发表于 2007-12-11 11:14:17 | 显示全部楼层
Post by xianfei520;1793952
if test "x`ls $QPEDIR/lib/libqpe.* 2> /dev/null`" != x ; then
里面的x是什么意思啊。。搞不懂给


其实x就是if的一个条件。
相当于:

  1. x=`....`
  2. if $x != x ;then
复制代码

:Music:
回复 支持 反对

使用道具 举报

发表于 2007-12-11 12:59:52 | 显示全部楼层
我还是认为这只是惯例罢了,你可以发现在所有的脚本里面都是把x和命令替换的内容放在双引号里面,即使两边都把x去掉,仍然可以正常执行。
回复 支持 反对

使用道具 举报

发表于 2007-12-12 09:00:00 | 显示全部楼层
用 x 来作为修饰符确实是惯例, 但是使用修饰符并不是习惯问题, 我解释过了, 变量未定义时会导致语法错误, ocean390 兄不信自己试一下就好了
回复 支持 反对

使用道具 举报

发表于 2007-12-12 12:09:24 | 显示全部楼层
if test "`ls $QPEDIR/lib/libqpe.* 2> /dev/null`" != "" ; then
我是说改成这样是没有问题的,因为在双引号里面嘛,可能你没理解我说的意思。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表