论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
软件与程序人生
›
程序人生
›
Shell 判断
Shell 判断
花瓣小跑
金牌会员
|
2022-6-25 08:39:14
|
显示全部楼层
|
阅读模式
楼主
主题
642
|
帖子
642
|
积分
1926
Shell 判断
文章目录
Shell 判断
1. if
1.1 if
1.2 if else
1.3 if else-if else
1.4 if test
1.5 if 文件判断
2. case
3. 组合表达式
1. if
1.1 if
if else
if
if 语句语法格式:
if condition
then
command1
command2
...
commandN
fi
复制代码
写成一行(适用于终端命令提示符):
if [ $(ps -ef | grep -c "ssh") -gt 1 ]; then echo "true"; fi
复制代码
末尾的fi就是if倒过来拼写,后面还会遇到类似的。
1.2 if else
if else
if else 语法格式:
if condition
then
command1
command2
...
commandN
else
command
fi
复制代码
1.3 if else-if else
if else-if else 语法格式:
if condition1
then
command1
elif condition2
then
command2
else
commandN
fi
复制代码
以下实例判断两个变量是否相等:
a=10
b=20
if [ $a == $b ]
then
echo "a 等于 b"
elif [ $a -gt $b ]
then
echo "a 大于 b"
elif [ $a -lt $b ]
then
echo "a 小于 b"
else
echo "没有符合的条件"
fi
输出结果:
a 小于 b
复制代码
1.4 if test
if else语句经常与test命令结合使用,如下所示:
num1=$[2*3]
num2=$[1+5]
if test $[num1] -eq $[num2]
then
echo '两个数字相等!'
else
echo '两个数字不相等!'
fi
输出结果:
两个数字相等!
复制代码
1.5 if 文件判断
基本的意义[ -a FILE]如果FILE存在,则为真。[ -b FILE]如果FILE存在并且是块特殊FILE,则为真。[ -c FILE]如果FILE存在并且是字符特殊FILE,则为真。[ -d FILE]如果FILE存在并且是一个目录,则为真。[ -e FILE]如果FILE存在,则为真。[ -f FILE]如果FILE存在并且是常规FILE,则为真。[ -g FILE]如果FILE存在且其 SGID 位已设置,则为真。[ -h FILE]如果FILE存在并且是符号链接,则为真。[ -k FILE]如果FILE存在并且其粘性位已设置,则为真。[ -p FILE]如果FILE存在并且是命名管道 (FIFO),则为真。[ -r FILE]如果FILE存在且可读,则为真。[ -s FILE]如果FILE存在且大小大于零,则为真。[ -t FD ]如果FILE描述符FD打开并指向终端,则为真。[ -u FILE]如果FILE存在且其 SUID(设置用户 ID)位已设置,则为真。[ -w FILE]如果FILE存在且可写,则为真。[ -x FILE]如果FILE存在且可执行,则为真。[ -O FILE]如果FILE存在并且归有效用户 ID 所有,则为真。[ -G FILE]如果FILE存在并且归有效组 ID 所有,则为真。[ -L FILE]如果FILE存在并且是符号链接,则为真。[ -N FILE]如果FILE存在并且自上次读取后已被修改,则为真。[ -S FILE]如果FILE存在并且是一个套接字,则为真。[FILE1- nt FILE 2 ]如果FILE1的更改比FILE2更新,或者FILE1存在而FILE2不存在,则为真。[FILE1 -otFILE 2 ]如果FILE1早于FILE2,或者FILE2存在而FILE1不存在,则为真。[FILE1 -efFILE 2 ]如果FILE1和FILE2引用相同的设备和 inode 号,则为真。[ -o选项名称]如果启用了 shell 选项“OPTIONNAME”,则为真。[-z字符串]如果“STRING”为零,则长度为真。[-n字符串] 或 [字符串]如果“STRING”的长度不为零,则为真。[ 字符串 1 == 字符串 2 ]如果字符串相等,则为真。 为了严格遵守 POSIX ,可以使用“=”代替“==” 。[ 字符串 1 != 字符串 2 ]如果字符串不相等,则为真。[ 字符串 1 < 字符串 2 ]如果“STRING1”在当前语言环境中按字典顺序排在“STRING2 ”之前,则为真。[ 字符串 1 > 字符串 2 ]如果“STRING1”在当前语言环境中按字典顺序排在“STRING2 ”之后,则为真。[ ARG1 开 ARG2 ]“OP”是-eq、-ne、-lt、-le、-gt或-ge之一。如果"ARG1"分别等于、不等于、小于、小于或等于、大于或大于或等于"ARG2" ,则这些算术二元运算符返回真。 “ARG1”和“ARG2”是整数。
2. case
name=`basename $0 .sh`
case $1 in
s|start)
echo "start..."
;;
stop)
echo "stop ..."
;;
reload)
echo "reload..."
;;
*)
echo "Usage: $name [start|stop|reload]"
exit 1
;;
esac
exit 0
复制代码
3. 组合表达式
OperationEffect[ ! EXPR ]如果EXPR为假,则为真。.[ ( EXPR ) ]返回EXPR的值。这可用于覆盖运算符的正常优先级.[ EXPR1 -a EXPR2 ]如果EXPR1和EXPR2都为真,则为真。[ EXPR1 -o EXPR2 ]如果EXPR1或EXPR2为真,则为真。参考:
Introduction to if
Conditional Statements | Shell Script
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
花瓣小跑
金牌会员
这个人很懒什么都没写!
楼主热帖
【电脑配置】新电脑买回来怎么配置? ...
数理逻辑第4-5章
使用axios发送post请求上传文件(multip ...
最简单易懂的ios p12证书 和描述文件的 ...
20天等待,申请终于通过,安装和体验In ...
应急响应(总)
从零开始学习MySQL调试跟踪(2) ...
计算机网络原理(谢希仁第八版)第六章课 ...
<一>关于运算符重载
C#学习笔记--数据结构、泛型、委托事件 ...
标签云
挺好的
服务器
快速回复
返回顶部
返回列表