分页: 1 / 1

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

发表于 : 2010-03-16 14:57
xiaomao101
比如:

代码: 全选

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

代码: 全选

DIR=dir
if [ "X${DIR}" = "Xdir" ]; then
看过挺多脚本都有这样的例子,应该有他的理由吧,不可能没有任何作用的。
那么,在什么情况下"X${DIR}"会不等于"Xdir"呢?

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

发表于 : 2010-03-17 9:38
cosechy
说明是从windows批处理翻译过来的

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

发表于 : 2010-03-17 10:52
xiooli
如果DIR没有值,那么

代码: 全选

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

代码: 全选

if [  = "dir" ]; then
这样会出错,所以前面加个字母(不一定是X),防止这种情况发生。

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

发表于 : 2010-03-17 12:26
xiaomao101
xiooli 写了:如果DIR没有值,那么

代码: 全选

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

代码: 全选

if [  = "dir" ]; then
这样会出错,所以前面加个字母(不一定是X),防止这种情况发生。
恩,谢了,很有道理阿

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

发表于 : 2010-03-17 12:59
cosechy
有双引号就不会出问题

这是因为早期windows批处理没有双引号这个概念
遗留下来的

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

发表于 : 2010-03-17 12:59
cosechy
你试试?

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

发表于 : 2010-03-17 13:08
xiaomao101
cosechy 写了:你试试?
那个,从windows翻译过来的是什么意思阿,我这边的脚本都是linux下的阿。

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

发表于 : 2010-03-18 13:55
cosechy
“你试试”应该是回另外一帖的,貌似发错了

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

发表于 : 2010-03-18 14:52
xiaomao101
cosechy 写了:“你试试”应该是回另外一帖的,貌似发错了