分页: 1 / 1

shell编程的一个问题

发表于 : 2007-06-12 15:53
kandyche
#!/bin/sh
if cp test test1
then echo“cp done”
else echo “cp fail”
fi


cp 成功不是返回0 吗?
为什么这个if 后执行的是1?

发表于 : 2007-06-12 15:56
eexpress
判断返回值。是$?吧

发表于 : 2007-06-12 15:59
kandyche
我知道判断返回值是成功是0
我意思是为什么这个if 后面的条件值为1(cp 成功后)

发表于 : 2007-06-12 15:59
kandyche
我知道判断返回值是成功是0
我意思是为什么这个if 后面的条件值为1(cp 成功后)

发表于 : 2007-06-12 16:08
iblicf
test 是保留字,不知道你说什么意思,

请你看看《提问的智慧》,不要在这里发什么家庭作业式的问题

发表于 : 2007-06-12 16:14
kandyche
不知道就别回啊,我的意思是cp test文件到test1
我是不理解if (cp test test1)这个条件为什么会成立?????
因为正如2楼说cp成功应该返回0

发表于 : 2007-06-12 16:20
thword
$echo test >test
$cp test test1
$echo $?
0
$rm test
$cp test test1
cp: 无法确认 ‘test’: No such file or directory
$echo $?
1
完全没有问题
$echo '#!/bin/sh
if cp test test1
then echo "cp done"
else echo "cp fail"
fi' >test.sh
$echo test >test
$sh test.sh
cp done
$rm test
$sh test.sh
cp: 无法确认 ‘test’: No such file or directory
cp fail
也没有问题

不知你想表达什么

发表于 : 2007-06-12 16:23
iblicf
废话,如果有test 文件在当前目录,cp当然成功,,if 本身就是判断 0 为真

发表于 : 2007-06-12 16:46
kandyche
我想表达的就是 if 判断的时候为什么0(cp 成功返回值) 为真??

发表于 : 2007-06-12 17:22
kandyche
知道答案了,谢谢各位。