Shell Script条件判断详解
作者:幽月静语
Shell Script条件判断
一、Shell 状态和重定向
shell 在执行某个命令的时候,会返回两个返回值:
命令的执行结果
命令的执行状态
返回状态保存到一个特殊变量:$? ,0表示执行状态成功。1-255表示执行命令不成功。
Shell 中命令的执行返回状态可以当作一个条件测试表达式:
命令返回状态为0:真
命令返回状态为1-255:假
输出重定向
Shell中如果只想获取命令的执行返回状态,而不想看命令的执行结果,怎么办?
①覆盖输出重定向:>
# 覆盖重定向 [root@localhost ~]# echo "abc" > abc.txt # 查看内容 [root@localhost ~]# cat abc.txt abc
②追加输出重定向:>>
# 追加重定向 [root@localhost ~]# echo "aaa" >> abc.txt # 查看内容 [root@localhost ~]# cat abc.txt abc aaa
③错误信息覆盖(追加)输出重定向:2> 和2>>
# 错误覆盖输出 [root@localhost ~]# ls /opt/myfile &> abc.txt # 查看内容 [root@localhost ~]# cat abc.txt ls: cannot access /opt/myfile: No such file or directory # 错误追加输出 [root@localhost ~]# ls /opt/abc.txt &>> abc.txt # 查看内容 [root@localhost ~]# cat abc.txt ls: cannot access /opt/myfile: No such file or directory ls: cannot access /opt/abc.txt: No such file or directory
④全部覆盖(追加)输出重定向:&> 和&>>
二、Shell逻辑操作符&&,||
逻辑与&&和逻辑或||操作符:
cmd1 && cmd2
根据cmd1的执行返回状态,如果cmd1为真,最后结果不能确定,cmd2会继续执行
根据cmd1的执行返回状态,如果cmd1为假,最后结果已经确定为假,cmd2不需执行
cmd1 || cmd2
根据cmd1的执行返回状态,如果cmd1为真,最后结果已经确定为真,cmd2不需执行
根据cmd1的执行返回状态,如果cmd1为假,最后结果不能确定,cmd2会继续执行
# 创建sh文件 [root@localhost ~]# vi myshell.sh # 写入内容 #!/bin/bash file="/opt/myfile/" [ -d $file ] && echo "$file 已经存在" [ -d $file ] || echo "$file 不存在" # 运行结果 [root@localhost ~]# bash myshell.sh /opt/myfile/ 不存在
三、IF语句 一)Shell IF条件分支语句概述
帮助文档:help if
属于shell中的复合命令
从语法可以看出涉及COMMANDS,在之前的学习中已经学习了不同用途的命令,都可以依据这些命令的执行结果来判断条件分支
语法:
if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]… [ else COMMANDS; ] fi
中括号是可选的意思
分号可以使用换行符替代
根据判断COMMANDS的退出状态选择:
COMMANDS成功执行:
then COMMANDS
COMMANDS执行失败:
elif COMMANDS
elif是else if的简写,在shell中空白符比较敏感
else COMMANDS
# 创建sh文件 [root@localhost ~]# vi myshell.sh # 写入内容 #!/bin/bash if [ $# -eq 1 ]; then echo "接收到一个参数,他是$1" elif [ $# -ge 2 ]; then echo "接受到的参数大于等于2个,第二个参数为:$2" else echo "没有接收到参数!!!" exit 1 fi # 不传递参数 [root@localhost ~]# bash myshell.sh 没有接收到参数!!! # 传递一个参数 [root@localhost ~]# bash myshell.sh abc 接收到一个参数,他是abc # 传递两个参数 [root@localhost ~]# bash myshell.sh abc abcd 接受到的参数大于等于2个,第二个参数为:abcd
到此这篇关于Shell Script条件判断的文章就介绍到这了,更多相关Shell Script条件判断内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!