Bash
1 基础知识
1.1 命令使用格式
1.2.1 获取命令帮助
man if
1.2.2 基本判断用法
if [ command ]; then 符合该条件执行的语句 fi
1.2.2 多条件分支判断用法
if [ command ]; then 符合该条件执行的语句 elif [ command ]; then 符合该条件执行的语句 else 符合该条件执行的语句 fi
1.2 command参数
1.2.1 获取参数帮助
man bash
1.2.2 判断文件或目录
[ -a "file"] 如果"file"存在则返回真 [ -d "file"] 如果"file"存在且是一个目录则返回真 [ -e "file"] 如果"file"指定的文件或目录存在时返回真 [ -f "file"] 如果"file"存在且是一个普通文件则返回真 [ -r "file"] 如果"file"存在且是可读的则返回真 [ -w "file"] 如果"file"存在且是可写的则返回真 [ -x "file"] 如果"file"存在且是可执行的则返回真 [ -b "file"] 如果"file"存在且是一个块文件则返回真 [ -c "file"] 如果"file"存在且是一个字符文件则返回真 [ -g "file"] 如果"file"存在且设置了SGID则返回真 [ -h "file"] 如果"file"存在且是一个符号符号链接文件则返回真(老系统可能无效) [ -k "file"] 如果"file"存在且已经设置了冒险位则返回真 [ -p "file"] 如果"file"存并且是命令管道时返回真 [ -s "file"] 如果"file"存在且大小非0时为真则返回真 [ -u "file"] 如果"file"存在且设置了SUID位时返回真 [ -O "file"] 如果"file"存在且属有效用户ID则返回真 [ -G "file"] 如果"file"存在且默认组为当前组则返回真 [ -L "file"] 如果"file"存在且是一个符号连接则返回真 [ -N "file"] 如果"file"存在且自上次读取后有修改则返回真 [ -S "file"] 如果"file"存在且是一个套接字则返回真 ["file1" -nt "file2"] 如果"file1"比"file2"新, 或者"file1"存在但是"file2"不存在则返回真 ["file1" -ot "file2"] 如果"file1"比"file2"老, 或者"file2"存在但是"file1"不存在则返回真 ["file1" -ef "file2"] 如果"file1"和"file2"指向相同的设备和节点号则返回真
1.2.3 判断字符串
[ -z “string” ] 如果“string”的长度为零则返回真,即空为真 [ -n “string” ] 如果“string”的长度非零则返回真,即非空是真 [ “string” ] 如果字符串不为空则返回真,与-n类似 [ “string1” == “string2” ] 如果两个字符串相同则返回真 [ “string1” != “string2” ] 如果字符串不相同则返回真 [ “string1” “string2” ] 如果 “string1”字典顺序在“string2”后面则返回真
1.2.3 比较数值大小
[ int1 -eq int2 ] int1和int2两数相等则返回真,与“=”等效 [ int1 -ne int2 ] int1和int2两数不等则返回真,与“”等效 [ int1 -gt int2 ] int1大于int2则返回真,与“>”等效 [ int1 -ge int2 ] int1大于等于int2则返回真,与“>=”等效 [ int1 -lt int2 ] int1小于int2则返回真,与“<”等效 [ int1 -le int2 ] int1小于等于int2则返回真,与“<=”等效
1.2.4 逻辑与或非
[ ! expr ] 逻辑非,如果”expr“是false则返回真(置返) [ expr1 -a expr2 ] 逻辑与,如果“expr1”且“expr2”都为真则返回真 [ expr1 -o expr2 ] 逻辑或,如果“expr1”或者“expr2”为真则返回真 [ ] || [ ] 用OR来合并两个条件 [ ] && [ ] 用AND来合并两个条件
2 最佳实践
2.1 判断文件或目录
2.1.1 判断文件是否存在
#!/bin/bash file="/etc/redhat-release" if [ -f "$file" ]; then echo "file fount!" fi
2.1.2 判断目录是否存在
#!/bin/bash dir="/etc" if [ -d "$dir" ]; then echo "file fount!" fi
2.2 判断字符串
2.2.1 确定字符串非空
#!/bin/bash str="www.cmdschool.org" if [ -n "str" ]; then echo "string is not empty" fi
2.2.2 比较字符串是否相同
#!/bin/bash str1="www.cmdschool.org" str2="www.cmdschool.com" if [ "str1" = "str2" ]; then echo "string same" else echo "string different" fi
2.3 比较数值大小
a=9 b=6 if [ "$a" -gt "$b" ]; then echo "a is biger than b" fi
2.4 逻辑与或非
#!/bin/bash file="/etc/redhat-release" if [ ! -f "$file" ]; then echo "file fount!" else echo "file no fount!" fi
参阅文档
=====================
https://blog.csdn.net/wxx_0124/article/details/95305625
没有评论