shell—命令执行成功的判断

在shell 中可以使用 echo $? 的结果来判断上一条命令是否执行成功,成功为0,否则非0.
分号;用来间隔多个依次执行的命令。
如果要使两个命令有关联,如果前面的执行正确就接着执行后面的,否则就略过,可以用&&来完成。

woody@linux:~$ ls /tmp && touch /tmp/testfile
gconfd-woody scim-helper-manager-socket-woody ssh-IBhPBd4873
mplayhfvs8X scim-panel-socket:0-woody
orbit-woody scim-socket-frontend-woody
woody@linux:~$ ls /tmp
gconfd-woody scim-helper-manager-socket-woody ssh-IBhPBd4873
mplayhfvs8X scim-panel-socket:0-woody testfile
orbit-woody scim-socket-frontend-woody

上面先用ls 判断目录tmp是否存在,如果存在就创建testfile文件,否则就不创建。
|| 与&&相反,如果执行错误才会执行后面的命令。
可以用来完成类似这样的功能: 当某个文件不存在的时候就去创建那个文件
woody@linux:~$ ls haha || touch haha
ls: cannot access haha: No such file or directory
woody@linux:~$ ls
Backup doc file1 haha playlist wallpapers
Desktop Downloads file2 linux_c_src vbox_share xrgsu
woody@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 directory
not exist
上面ls 不成功, 则echo "exist" 不执行,返回值是ls的返回值(失败),这样||后面的指令执行。
woody@linux:~$ touch /tmp/heihei
woody@linux:~$ ls /tmp/heihei && echo "exist"||echo "not exist"
/tmp/heihei
exist
woody@linux:~$
上面的ls 执行成功,接着成功执行echo "exist" ,||后面不执行。
但是不能写成 ls /tmp/heihei ||echo "not exist" && echo "exist"
因为如果ls失败, 则echo "not exist" , 但是echo执行成功, 则 &&后面的echo "exist" 会接着执行。这样就同时显示not exist exist 了。
记住命令是顺序执行的就可以了!

备份目录下面文件
#!/bin/bash
case $# in //$#表示转入参数的个数,sh bak.sh ./ .sh 有二个参数./和.sh
0) // 参数为空时,提示错误,并且退出
echo "message:param is wrong"
exit $E_BADARGS;;
esac

string=" "

cd $1 //进入传入的目录

//备份子目录中的文件时,参数也要接上
if [ $# -gt "1" ]
then
string=$string" "$2
fi

for 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
fi
done
exit 0

bak.sh ./ .sh 这句话的意思是把当前目录(以及子目录)中的所有以.sh为后缀的文件,进行备份
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值