[已解决]比较字符串的时候为什么在前面加个“X”呢?

sh/bash/dash/ksh/zsh等Shell脚本
回复
头像
xiaomao101
帖子: 474
注册时间: 2006-04-05 18:12
联系:

[已解决]比较字符串的时候为什么在前面加个“X”呢?

#1

帖子 xiaomao101 » 2010-03-16 14:57

比如:

代码: 全选

if [ "X${DIR}" = "X" ]; then
或者

代码: 全选

DIR=dir
if [ "X${DIR}" = "Xdir" ]; then
看过挺多脚本都有这样的例子,应该有他的理由吧,不可能没有任何作用的。
那么,在什么情况下"X${DIR}"会不等于"Xdir"呢?
上次由 xiaomao101 在 2010-03-17 12:27,总共编辑 1 次。
cosechy
帖子: 82
注册时间: 2008-03-06 4:56

Re: 比较字符串的时候为什么在前面加个“X”呢?

#2

帖子 cosechy » 2010-03-17 9:38

说明是从windows批处理翻译过来的
头像
xiooli
帖子: 6956
注册时间: 2007-11-19 21:51
来自: 成都
联系:

Re: 比较字符串的时候为什么在前面加个“X”呢?

#3

帖子 xiooli » 2010-03-17 10:52

如果DIR没有值,那么

代码: 全选

if [ "X${DIR}" = "Xdir" ]; then
在忘记打括号的情况下就会成为:

代码: 全选

if [  = "dir" ]; then
这样会出错,所以前面加个字母(不一定是X),防止这种情况发生。
头像
xiaomao101
帖子: 474
注册时间: 2006-04-05 18:12
联系:

Re: 比较字符串的时候为什么在前面加个“X”呢?

#4

帖子 xiaomao101 » 2010-03-17 12:26

xiooli 写了:如果DIR没有值,那么

代码: 全选

if [ "X${DIR}" = "Xdir" ]; then
在忘记打括号的情况下就会成为:

代码: 全选

if [  = "dir" ]; then
这样会出错,所以前面加个字母(不一定是X),防止这种情况发生。
恩,谢了,很有道理阿
cosechy
帖子: 82
注册时间: 2008-03-06 4:56

Re: [已解决]比较字符串的时候为什么在前面加个“X”呢?

#5

帖子 cosechy » 2010-03-17 12:59

有双引号就不会出问题

这是因为早期windows批处理没有双引号这个概念
遗留下来的
cosechy
帖子: 82
注册时间: 2008-03-06 4:56

Re: [已解决]比较字符串的时候为什么在前面加个“X”呢?

#6

帖子 cosechy » 2010-03-17 12:59

你试试?
头像
xiaomao101
帖子: 474
注册时间: 2006-04-05 18:12
联系:

Re: [已解决]比较字符串的时候为什么在前面加个“X”呢?

#7

帖子 xiaomao101 » 2010-03-17 13:08

cosechy 写了:你试试?
那个,从windows翻译过来的是什么意思阿,我这边的脚本都是linux下的阿。
cosechy
帖子: 82
注册时间: 2008-03-06 4:56

Re: [已解决]比较字符串的时候为什么在前面加个“X”呢?

#8

帖子 cosechy » 2010-03-18 13:55

“你试试”应该是回另外一帖的,貌似发错了
头像
xiaomao101
帖子: 474
注册时间: 2006-04-05 18:12
联系:

Re: [已解决]比较字符串的时候为什么在前面加个“X”呢?

#9

帖子 xiaomao101 » 2010-03-18 14:52

cosechy 写了:“你试试”应该是回另外一帖的,貌似发错了
回复