Shell运维实战2-条件判断与函数

Shell 条件测试与比较


脚本条件测试

# -f判断文件是否存在,如果存在返回真,反之为假
# 一下结构类似于三元运算符,文件存在则执行true,不存在则执行false
test -f file && echo true || echo false

# 使用中括号包裹test所有参数及其对应值
# 中括号左右端都必须预留一个空格距离,否则报错
test [ -f file ] && echo 1 || echo 2

一般的,都建议运算符号之间没有距离(即没有很多空格阻隔)


文本测试表达式

在这里插入图片描述

# 对单个文件变量进行测试
[ -f "$fileval" ] && echo 1 || echo 0

实际开发中常用的条件判断语句模板

如果条件返回 true,则执行大括号内的所有指令

[ 条件 ] &&{
    命令1
    命令2
    命令3
}

字符串测试表达式

使用时特别注意空格间距的安排!

# -n "abs" 若字符串长度非0,返回true
[ -n "abs" ] && echo 1 || echo 0

# -z "abs" 若字符串长度为0,返回true
[ -n "" ] && echo 1 || echo 0

整数二元比较操作符

在这里插入图片描述

编写时分为两种情况,按照上图针对性使用

[[]](())内也可以使用文字式比较符号,但是不推荐!

[ 2 -eq 1 ] && echo 1 || echo 0
[[ 2 > 10 ]] && echo 1 || echo 0

(($num1<$num2)) && echo 1 || echo 0

不建议在正式工作中使用 [[]] ,因为它比较复杂,这会为开发带来很多麻烦

三种形式使用到的符号总结

  • 整数加双引号的比较是对的。
  • [[]]中用类似-eq等的写法是对的,[[]]中用类似>、<的写法也可能不对,有可能会只比较第一位,逻辑结果不对。
  • []中用类似>、<的写法在语法上虽然可能没错,但逻辑结果不对,可以使用=、! =正确比较。
  • (())中不能使用类似-eq等的写法,可以使用类似>、<的写法。

逻辑操作符

与或非运算,除了在 [] 内可以使用字符式表达,其余两个可以使用对应的原始符号(如&&)

[ 1 -a 1 ] # 相当于 &&
[ 1 -o 1 ] # 相当于 ||
[ 1 ! 1 ] # 相当于 !

区别总结

在这里插入图片描述


if 语句


# 基础判断语句
# if开头,then衔接,fi结尾
if  <条件表达式>
    then
    指令
fi

# 双分支结构
if  <条件表达式>
    then
    指令集1
else
    指令集2
fi

# 多分支结构
if  <条件表达式1>
    then
    指令1
elif <条件表达式2>
    then
    指令2
else
    指令3
fi

除此之外,if 还可以结合 测试表达式test、[]、[[]]、(()) 作为判断条件使用


Shell 函数


基础执行

shell 中定义函数有三种办法

# 标准格式
function demo1(){}

# 有function修饰的情况下可不写小括号
function demo2{}

# 无function修饰必须要有小括号
demo3(){}

特别注意,由于 ubuntu 中 sh 和 bash 相互冲突的关系,执行脚本时务必使用 bash 命令,否则当你使用 function 定义函数的时候会一直报错!!!


猜你喜欢

转载自blog.csdn.net/delete_you/article/details/130747818