日期:2014-05-16  浏览次数:20781 次

如何在执行linux命令的时候满足某种条件才执行?
我有个appliation里面需要执行一个mv的shell,e.g: mv test001.csv test.txt。但是现在有个情况是有的时候这个test001.csv不存在 (test001.csv是个动态的名字,只要判断.csv文件就行),就不用执行。请问我如何写一条shell判断当目录下有.csv文件时执行mv命令,否则什么都不做。谢谢

------解决方案--------------------
ls test001.csv && mv test001.csv test.txt
------解决方案--------------------
if [ -e "test001.csv" ]; then
mv test001.csv test.txt
fi


PHP code

bash中的if使用方法:

if condition 
then 
    statements 
[elif condition 
    then statements. ..] 
[else 
    statements ] 
fi 

str1 = str2,字符串1匹配字符串2 
str1 != str2,字符串1不匹配字符串2 
str1 > str2,字符串1大于字符串2 
str1 < str2,字符串1小于字符串2 
-n str,字符串不为null,长度大于零 
-z str,字符串为null,长度为零 

-a   file :file 存在 
-d file :file存在并是一个目录 
-e file :file 存在,同- a 
-f file :file 存在并且是一个常规的文件(不是目录或者其他特殊类型文件) 
-r file :有读的权限 
-s file :文件存在且不为空 
-w file :有写的权限 
-x file :有执行的权限,或者对于目录有search的权限 
-N file :在上次读取后,文件有改动 
-O file :own所属的文件 
-G file :group所属的文件 
file1 -nt file2 :file1 比 file2 更新,以最后更新时间为准 
file1 -ot file2 :file1 比 file2 更旧 ,以最后更新时间为准 

-lt,小于 
-le,小于等于 
-eq,等于 
-ge,大于等于 
-gt,大于 
-ne,不等于

------解决方案--------------------
=。= 好吧...其实只要第一个命令能执行成功并且不修改文件,什么命令都可以...

cat test001.csv 1>/dev/null 2>&1 && mv test001.csv test.txt
test test001.csv 1>/dev/null 2>&1 && mv test001.csv test.txt