shell(学习笔记二)
条件测试
test 选项 参数
或 test [选项 参数]
help test 查阅帮助
字符串比较
- 判断字符串是否为空
[ -z str ]
- 判断字符串是否相等
[ str1 == str2 ]
- 判断字符串是否不等
[ str1 != str2 ]
方括号[]和内容之间必须有空格, == 和 != 左右两边也需要有空格
示例:
[ -z "$T"]
echo $? #查看上一条命令执行的结果
[ "$USER" == root ]
echo $?
使用test命令
num1="ru1noob"
num2="runoob"
if test $num1 = $num2
then
echo '两个字符串相等!'
else
echo '两个字符串不相等!'
fi
= 等于则为真
!= 不相等则为真
-z 字符串 字符串的长度为零则为真
-n 字符串 字符串的长度不为零则为真
数值比较
[ 整数值1 操作符 整数值2 ]
操作符 | 含义 |
---|---|
-eq | 等于 equal |
-ne | 不等于 not equal |
-ge | 大于或等于 greater or equal |
-le | 小于或等于 less or equal |
-gt | 大于 greater than |
-lt | 小于 less than |
示例:
[ $(who | wc -l) -ge 2 ] #判断计算机当前登录的用户数量是否大于2
echo $?
数值比较使用test命令
num1=100
num2=100
if test $[num1] -eq $[num2]
then
echo '两个数相等!'
else
echo '两个数不相等!'
fi
文件状态测试
[操作符 文件或目录]
-e :判断对象是否存在(exist)
-d :判断对象是否是目录(directory)
-f :判断对象是否为一般文件(file)
-r :判断对象是否有可读权限
-w :判断对象是否有可写权限
-x :判断对象是否有可执行权限
示例:
bash[ -e /etc/ ]
echo $?
文件测试使用test命令
if test -e ./bash
then
echo '文件已存在!'
else
echo '文件不存在!'
fi
参数补充(接上):
-s 文件名 :如果文件存在且至少有一个字符则为真
-c 文件名 :如果文件存在且为字符型特殊文件则为真
-b 文件名 :如果文件存在且为块特殊文件则为真
Shell 还提供了与( -a )、或( -o )、非( ! )三个逻辑操作符用于将测试条件连接起来,其优先级为: ! 最高, -a 次之, -o 最低。例如:
if test -e ./notFile -o -e ./bash
then
echo '至少有一个文件存在!'
else
echo '两个文件都不存在'
fi
控制操作符
使用控制符组合多条命令
; && ||
命令 ; 命令
按顺序执行,命令之间没有关系命令 && 命令
命令之间有逻辑关系,当前一条命令执行成功,后一条命令才会执行命令 || 命令
前一条命令执行成功,后一条命令不再执行;反之,前一条命令执行失败,则执行后一条命令
示例:
cd /etc/ ; ls #若cd的路径不存在,第一个命令会报错,ls依旧会执行,执行结果列出当前目录下文件
[ a == a ] && ls #仅当前一条执行成功才会执行ls
[ a == b ] || echo message #前一命令执行失败则执行echo
[ a == a ] && echo Y || echo N
学习来源:【2021版】Shell脚本从入门到精通以及菜鸟教程
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下