FJJJ8 发表于 2013-2-4 13:01:36

shell—命令执行成功的判断

在shell 中可以使用 echo $? 的结果来判断上一条命令是否执行成功,成功为0,否则非0.
分号;用来间隔多个依次执行的命令。
如果要使两个命令有关联,如果前面的执行正确就接着执行后面的,否则就略过,可以用&&来完成。woody@linux:~$ ls /tmp && touch /tmp/testfilegconfd-woody scim-helper-manager-socket-woody ssh-IBhPBd4873mplayhfvs8X   scim-panel-socket:0-woodyorbit-woody   scim-socket-frontend-woodywoody@linux:~$ ls /tmpgconfd-woody scim-helper-manager-socket-woody ssh-IBhPBd4873mplayhfvs8X   scim-panel-socket:0-woody      testfile orbit-woody   scim-socket-frontend-woody
上面先用ls 判断目录tmp是否存在,如果存在就创建testfile文件,否则就不创建。
|| 与&&相反,如果执行错误才会执行后面的命令。
可以用来完成类似这样的功能: 当某个文件不存在的时候就去创建那个文件
woody@linux:~$ ls haha || touch hahals: cannot access haha: No such file or directorywoody@linux:~$ lsBackup   doc      file1 haha         playlist    wallpapersDesktop Downloads file2 linux_c_src vbox_share xrgsuwoody@linux:~$
例子:
用ls 测试/tmp/heihei 是否存在, 存在则显示exist 否则显示 not exist
woody@linux:~$ ls /tmp/heihei && echo "exist"||echo "not exist"ls: cannot access /tmp/heihei: No such file or directorynot exist上面ls 不成功, 则echo "exist" 不执行,返回值是ls的返回值(失败),这样||后面的指令执行。woody@linux:~$ touch /tmp/heiheiwoody@linux:~$ ls /tmp/heihei && echo "exist"||echo "not exist"/tmp/heiheiexistwoody@linux:~$ 上面的ls 执行成功,接着成功执行echo "exist" ,||后面不执行。
但是不能写成 ls /tmp/heihei ||echo "not exist" && echo "exist"
因为如果ls失败, 则echo "not exist" , 但是echo执行成功, 则 &&后面的echo "exist" 会接着执行。这样就同时显示not exist exist 了。
记住命令是顺序执行的就可以了!

备份目录下面文件
#!/bin/bashcase $# in//$#表示转入参数的个数,sh bak.sh ./ .sh 有二个参数./和.sh0) // 参数为空时,提示错误,并且退出echo "message:param is wrong"exit $E_BADARGS;;esacstring=" "cd $1//进入传入的目录//备份子目录中的文件时,参数也要接上if [ $# -gt "1" ]then string=$string" "$2fifor filename in * //读取当前目录中的文件do if [ -d "$filename" ] //判断一下是不是目录 then /bin/sh /home/zhangy/test/$0 $(pwd)/$filename $string //是目录的话,进行递归 else if [ $# -gt "1" ] && [ ${filename:(-${#2})} = $2 ] //指定备份什么样的文件 then cp $filename $filename"bak" fi if [ $# -eq "1" ] then cp $filename $filename"bak" //没指定,备份目录下面的所有文件 fi fidoneexit 0
bak.sh ./ .sh这句话的意思是把当前目录(以及子目录)中的所有以.sh为后缀的文件,进行备份
页: [1]
查看完整版本: shell—命令执行成功的判断