条件测试与条件判断的脚本编写思路
测试命令语法与路径表达在编写脚本前,需单独测试命令是否能实现需求。例如检查文件是否存在:
test -e /opt/1.txt # 或使用方括号格式 [ -e /opt/1.txt ]通过echo $?验证返回值(0为真,非0为假)。
变量与命令结合将静态路径替换为变量,增强脚本灵活性:
file_path="/opt/1.txt" [ -f "$file_path" ] && echo "文件存在" || echo "文件不存在"调试脚本使用bash -x逐行调试脚本,观察变量展开与命令执行顺序:
bash -x your_script.sh条件判断操作符详解
文件/目录测试
-e:目标是否存在(文件或目录均可)-f:目标是否为普通文件-d:目标是否为目录-L:目标是否为符号链接-r/-w/-x:检查当前用户对目标的读/写/执行权限
逻辑运算符
&&(或-a):仅当左侧命令成功(返回0)时执行右侧命令||(或-o):仅当左侧命令失败(返回非0)时执行右侧命令
[ -f "/opt/1.txt" ] && echo "Found" || echo "Not found"数值比较操作符
整数比较
-eq:等于(等价于==)-ne:不等于(等价于!=)-gt:大于(等价于>)-lt:小于(等价于<)-ge:大于等于(等价于>=)-le:小于等于(等价于<=)
示例:
a=19 [ "$a" -gt 10 ] && [ "$a" -lt 20 ] && echo "在10到20之间"多分支条件结构
if-elif-else 示例根据多个条件执行不同分支:
food="面条" if [ "$food" = "米饭" ]; then echo "去吃米饭" elif [ "$food" = "面条" ]; then echo "去吃面条" elif [ "$food" = "烤鱼" ]; then echo "去吃烤鱼" else echo "吃馒头" fi注意事项
- 字符串比较使用
=而非-eq(后者用于数值)。 - 方括号内变量建议用双引号包裹,避免空值或空格导致语法错误。
- 缩进非必须但可提升可读性。
