`

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为后缀的文件,进行备份
分享到:
评论

相关推荐

    Java 调用 Linux shell 命令执行框架:sshxcute

    常见的办法是通过本地工具(例如 Putty)连接远程计算机,输入命令执行,但是当遇到需要集成这些任务到代码或者开发、测试框架中时,往往就没有很好的解决方案了。sshxcute 就是这样一个框架工具集,它基于 JSCH ...

    shell脚本中执行python脚本并接收其返回值的例子

    1.在shell脚本执行python脚本时,需要通过python脚本的返回值来判断后面程序要执行的命令 例:有两个py程序 hello.py 代码如下: def main():  print “Hello” if __name__==’__main__’:  main() world.py def ...

    shell脚本判断文件夹或目录是否存在,不存在则创建新文件夹或目录.sh

    shell自动化脚本,自动判断文件夹(目录)是否存在,如不存在自动创建,可执行,下载可测试

    shell脚本 自己编写 ubuntu下测试运行成功

    (1)判断/home下是否存在一个的目录文件;如果不存在则转(2)继续往下执行;如果存在则判断该目录下是否存在一个.c文件,如果不存在则转...(5)在shell脚本中写好编译命令 (6)在shell脚本中运行程序,输出相应内容

    【shell脚本】shell脚本之条件判断if、for与while循环(shell脚本基础学习二)

    【shell脚本】shell脚本之条件判断if、for与while循环(shell脚本基础学习二) shell中的if 单分支 if 条件测试 ;then 命令序列 fi 双分支 if 条件测试 ;then 命令序列1 else 命令序列2 fi 多分支 if 条件测试 ;...

    Linux下Shell的实现说明

    1、 首先利用readline()函数读到用户输入的shell命令,采用一个数组来保存shell命令,数组有固定的大小。 2、 在main()函数中根据字符串中是否存在 "&" 字符判断是否为后台进程。如果是后台命令则判断是否是多条...

    linux的shell命令检测某个java程序是否执行

    ps -ef |grep java|grep

    linux 监视端口是否正常的shell脚本

    代码如下: #!/bin/bash port=”80″ restart=”/etc/init.d/httpd restart” EMAIL=”/bin/echo selboo | mutt -s “重新启动...$EMAIL exit $? } exit 0 您可能感兴趣的文章:linux使用管道命令执行ps获取cpu与内

    新版Linux Shell编程实训(全)20170518.docx

    项目六 Shell命令输出 112 [学习目标] 112 任务6.1 Shell echo命令 113 任务6.2 Shell printf命令 116 任务6.3 Shell test命令 119 任务6.4 Shell案例:查看系统资源使用情况 122 练习(每题20分,共计100分) 125 ...

    freemarker命令简介

    判断对象是不是null 常用格式化日期 添加全局共享变量数据模型 直接调用java对象的方法 字符串处理(内置方法) 在模板里对sequences和hashes初始化 注释标志 sequences内置方法 hashes内置方法

    LINUX and SHELL 自学总结

    4 字符串表达式(判断条件命令IF) 10 5. #SLEEP等待 10 6. #TEE执行结果复制保存 10 七、数组生成方法 10 1. #SEQ方法生成 10 2. 通过内部{BEGIN..END}生成 11 3. 以性能比较 11 4. 数组 11 八、LINUX系统常用配置...

    Shell脚本避免重复执行的方法

    # 检查通过sh命令执行的shell脚本是不是还在执行当中,避免重复执行. # 把这段代码放在需要保证唯一性的程序头部即可 # 注意,如果直接把此脚本放到cron里面执行的话,必须再grep -v ” -c sh “以排除由cron产生的...

    shell脚本基础学习|理论+实操

    更明白地来说,shell script就像早期dos年代的.bat,最简单的功能就是将许多指令汇整写一起,让使用者很容易地就能够一个操作执行多个命令,而shell script更是提供了数组,循环,条件以及逻辑判断等重要功能,让...

    linux下的shell项目知识累积

    shell脚本是一个包含shell命令的ASCII码文件,特点是可以用文本处理工具查看如more 脚本名 来讯速的判断它是不是脚本.如果是命令的话则显示乱码 而命令则是可执行的二进制代码文件 Shell脚本可理解为shell命令与应用...

    shell-bot:执行命令并发送实时输出的Telegram机器人

    您告诉它一个命令,它执行它并发布实时输出。 您可以通过回复输出消息将输入发送到命令。 这是一个相当复杂的示例,因为它实际上在命令中显示为终端,解释转义序列,并且如果触摸了它们的行,它将更新消息。 这...

    02-SHELL编程之流程控制和循环语句

    2. 根据命令的执行结果状态来判断是否通 $? 3. 根据逻辑和语法结构来编写脚本(条件判断或者流程控制) 步骤: vim ping.sh #!/bin/bash # Name:ping.sh # Path:/shell02/ # Usage:/shell02/ping.sh # ... #获取远程...

    Shell脚本入门全套–命令排序

    例如在Shell脚本中 在一行中执行多个命令可以使用;进行将其分割 例如: cd /usr/local/ ; ls 两侧有没有空格都没有关系 ;仅仅是用于命令的排序 没有任何逻辑关系 命令排序 && 在Shell脚本中 想让语句拥有简单的逻辑...

    Linux shell 编程学习笔记

    #然后可以通过以下命令执行 #相对路径,或者绝对路径 ./start.sh #一个脚本范例,&& 表示的是逻辑判断,表示前面执行成功才会执行 #当然也可以用分号,但是不代表逻辑判断,前面执行成功与否都会执行 # || 代表逻辑...

    【shell编程】基础篇

    文章目录基础篇一、Shell概述二、脚本定义与执行三、shell中的变量四、运算符五、条件判断六、流程控制七、read读取控制台输入八、函数九、Shell工具 基础篇 一、Shell概述 shell是一个功能比较强大的脚本语言,易...

    UNIX Handbook

    26.iTELLIN示例十:判断操作是否成功 70 27.iTELLIN示例十一:封装创建一个组的函数 71 28.iTELLIN示例十二:封装创建一个用户的函数 72 29.iTELLIN示例十三:判断一个字符串是否是正整数 74 30.iTELLIN示例十...

Global site tag (gtag.js) - Google Analytics