论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
运维.售后
›
运维.售后
›
Linux_shell脚本if语句具体教程
Linux_shell脚本if语句具体教程
金歌
金牌会员
|
2025-2-12 20:24:26
|
显示全部楼层
|
阅读模式
楼主
主题
916
|
帖子
916
|
积分
2748
媒介
在 Linux Shell 脚本中,if 语句用于基于条件实行命令或代码块。它的基本语法结构如下:
if 条件; then
# 如果条件为真时执行的代码
elif 另一个条件; then
# 如果另一个条件为真时执行的代码
else
# 如果所有条件都不成立时执行的代码
fi
复制代码
一、if 语句中 &&、|| 和 ! 的使用方法
1、&& (逻辑与)
&& 用于连接两个命令,当左边的命令乐成(即返回值为0)时,右边的命令才会实行。
# 语法结构:
if 条件一 && 条件二; then
echo "条件一和条件二都执行成功"
else
echo "条件一或条件二有失败"
fi
复制代码
逻辑:
假如 条件一 乐成(返回值为 0)且 条件二 也乐成(返回值为 0),then 分支会实行。
假如 条件一 失败(返回非 0),大概 条件二 失败(返回非 0),else 分支会实行。
这个规则是基于“与”运算符:只有两个条件都乐成,then 才会实行。
# 场景示例:检查一个文件是否存在且可执行
#!/bin/bash
FILE="/home/user/file.sh"
# [ ] 写法
if [ -e "$FILE" ] && [ -x "$FILE" ]; then
echo "[: 文件存在且可执行"
else
echo "[: 文件不存在或不可执行"
fi
# [[ ]] 写法
if [[ -e "$FILE" && -x "$FILE" ]]; then
echo "[[: 文件存在且可执行"
else
echo "[[: 文件不存在或不可执行"
fi
复制代码
2、|| (逻辑或)
|| 用于连接两个命令,当左边的命令失败(即返回值不为0)时,右边的命令才会实行
# 语法结构:
if 条件一 || 条件二; then
echo "条件一或条件二执行成功"
else
echo "条件一和条件二都执行失败"
fi
复制代码
逻辑:
假如 条件一 乐成(返回值为 0),then 分支会实行。
假如 条件一 失败(返回非 0),则会查抄 条件二:
假如 条件二 乐成(返回值为 0),then 分支也会实行。
假如 条件一 和 条件二 都失败(返回非 0),则会实行 else 分支。
这个规则是基于“或”运算符:只要有一个条件乐成,then 就会实行。
# 场景示例:检查目录是否存在,如果不存在则创建
#!/bin/bash
DIR="/home/user/mydir"
if [[ -d "$DIR" ]] || mkdir "$DIR" > /dev/null 2>&1; then
echo "目录已存在或已成功创建"
else
echo "创建目录失败"
fi
复制代码
3、! (逻辑非)
! 用于对一个条件举行取反。假如条件为真,! 会使其为假,反之亦然。
# 语法结构:
if ! 条件一; then
echo "条件一假,取反真"
else
echo "条件一真,取反假"
fi
复制代码
# 示例
#!/bin/bash
if [ ! -f "file.txt" ]; then
echo "文件不存在"
else
echo "文件存在"
fi
复制代码
#!/bin/bash
# ! 与 && 配合使用
if [ ! -f "file.txt" ] && echo "假如条件二成功"; then
echo "条件一(文件不存在,取反真)和条件二都执行成功"
else
echo "条件一(文件存在,取反假)或条件二有失败"
fi
复制代码
二、查抄文件和文件夹方法
1、判定文件是否存在
-f
#!/bin/bash
# 获取当前脚本文件所在的目录
SCRIPT_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
# 设置要检查的文件名
file="${SCRIPT_DIR}/example.txt"
echo ${file}
# 判断文件是否存在
if [ -f "$file" ]; then
echo "$file 文件存在"
else
echo "$file 文件不存在"
fi
复制代码
2、判定文件夹(目录)是否存在
-d
# 设置要检查的目录名
dir="/home/user/myfolder"
# 判断目录是否存在
if [ -d "$dir" ]; then
echo "$dir 目录存在"
else
echo "$dir 目录不存在"
fi
复制代码
其它参数阐明-e查抄文件或目录是否存在(不管是文件还是目录)-r查抄文件是否可读(非root权限下才能获取精确)-w查抄文件是否可写(非root权限下才能获取精确)-x查抄文件是否可实行(非root权限下才能获取精确)
三、字符串比较、数值比较及算术比较
1.整数数值对比
数值比较参数阐明-lt表示 “less than”(小于)-eq表示 “equal to”(便是)-ne表示 “not equal to”(不便是)-gt表示 “greater than”(大于)-ge表示 “greater than or equal to”(大于或便是)-le表示 “less than or equal to”(小于或便是)
示例
#!/bin/bash
a=2
b=2
if [[ $a -eq $b ]]; then
echo "$a 等于 $b"
else
echo "$a 不等于 $b"
fi
复制代码
2.字符串对比
字符串比较参数阐明==字符串相等!=字符串不相等
示例
#!/bin/bash
a="abcdef"
b="abcde"
# 比较字符串是否相等
if [[ $a == $b ]]; then
echo "字符串 '$a' 和 '$b' 相等"
else
echo "字符串 '$a' 和 '$b' 不相等"
fi
# 比较字符串是否不相等
if [[ $a != $b ]]; then
echo "字符串 '$a' 和 '$b' 不相等"
else
echo "字符串 '$a' 和 '$b' 相等"
fi
复制代码
3、算术比较
算术比较参数阐明<小于==便是!=不便是>大于>=大于或便是<=小于或便是
#!/bin/bash
num1=5
num2=5
if (( num1 == num2 )); then
echo "${num1} 和 ${num2} 相等"
else
echo "${num1} 和 ${num2} 不相等"
fi
a=10
b=1
if (( (a + b) > 10 )); then
echo "a 和 b 的和大于 10"
fi
复制代码
四、查抄命令的退出状态
#!/bin/bash
# 执行某个命令
ls /home > /dev/null 2>&1
# 判断命令是否成功
if [ $? -eq 0 ] ; then
echo "命令执行成功"
else
echo "命令执行失败"
fi
# $? 存储的是上一个命令的退出状态。
# 退出状态 0 通常表示命令成功执行,其他非零值表示命令执行失败。
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
金歌
金牌会员
这个人很懒什么都没写!
楼主热帖
白鲸开源 DataOps 平台加速数据分析和 ...
iOS 集成WebRTC相关知识点总结 ...
SQL Server 2014完全卸载与SQL Server ...
缓存穿透,缓存雪崩,缓存击穿 ...
【docker专栏6】详解docker容器状态转 ...
查漏补缺——路由显示的是http://local ...
【ALM工具软件】上海道宁与Perforce为 ...
一个工作薄中快速新建多个数据表 ...
如何成功实施一个数据治理项目?实施步 ...
.NET ORM框架HiSql实战-第一章-集成HiS ...
标签云
挺好的
服务器
快速回复
返回顶部
返回列表