shell编程的一个问题

shell编程的一个问题

#!/bin/sh
if cp test test1
then echo“cp done”
else echo “cp fail”
fi


cp 成功不是返回0 吗?
为什么这个if 后执行的是1?      
bash里面:0为真      
[root@localhost shell]# cat ./test
#!/bin/bash
if cp ./1.txt ./3.txt ;then
echo "done"
else
  echo "no"
fi
[root@localhost shell]# ./test
done
[root@localhost shell]# echo $?
0
怎么会是1呢      
引用:
原帖由 kandyche 于 2007-6-12 16:03 发表
#!/bin/sh
if cp test test1
then echo“cp done”
else echo “cp fail”
fi


cp 成功不是返回0 吗?
为什么这个if 后执行的是1?
`这个 if 后执行的是 1' 怎么理解?      
他的意思估计是:cp test test2执行返回的是1吧?
老是觉这样写怪怪的,这样写,如果执行失败,返回的是一串东西吧,如果你要判断它执行是否正常,这样写好了:
cp test tet1
if [ $? -eq 0 ];then
   echo ""
else
  echo ""
fi