Linux:shell脚本:基础使用(2)

这篇具有很好参考价值的文章主要介绍了Linux:shell脚本:基础使用(2)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

test命令

格式1:test  条件表达式

格式2:[  条件表达式  ]  (前后至少应有一个空格)

常用的测试操作符

-d:测试是否为目录(Directory)

-e:测试目录或文件是否存在(Exist)

-f:测试是否为文件(File)
-r:测试当前用户是否有权限读取(Read)

-w:测试当前用户是否有权限写入(Write)

-x:测试当前用户是否有权限执行(eXcute)

test -e /etc/passwd

# 测试/etc/passwd这个文件或者目录是否存在 

echo $?

输出0表示条件成立,也就是有这个文件或者目录

Linux:shell脚本:基础使用(2),linux,运维,服务器,shell脚本

 但是在实际中我们不经常使用这种语法,我们常用的语法为[  条件表达式  ]这种格式

  [  -d /media/cdrom  ]

 # 是否有/media/cdrom这个文件

echo $?

只有0代表成立,也就是有,非0的任何数字都是无(不成立) 

 Linux:shell脚本:基础使用(2),linux,运维,服务器,shell脚本

Linux:shell脚本:基础使用(2),linux,运维,服务器,shell脚本

这个就是文件存在

 附加:(提前看看后面会讲)

[ -d /etc/sysconfig/ ] && echo "YES"

Linux:shell脚本:基础使用(2),linux,运维,服务器,shell脚本

&&逻辑与,“而且”的意思

意思就是只要成立了就一起执行与后面的 


整数值比较 

格式:[  整数1  操作符  整数2  ]

    常用的测试操作符

-eq:等于(Equal)

-ne:不等于(Not Equal)

-gt:大于(Greater Than)

-lt:小于(Lesser Than)

-le:小于或等于(Lesser or Equal)

-ge:大于或等于(Greater or Equal)

cat /etc/passwd | wc -l

# 查看有几行

[ $(cat /etc/passwd | wc -l) -gt 10 ] && echo "用户数量大于10"

Linux:shell脚本:基础使用(2),linux,运维,服务器,shell脚本

[ $(cat /etc/passwd | wc -l) -ge 27 ] && echo "用户数量大于等于27"

Linux:shell脚本:基础使用(2),linux,运维,服务器,shell脚本

aaa=$(free -m | grep -i "mem" | awk '{print $4}')

# 查看空闲内存将值赋予给变量aaa

[ $aaa -lt 10240 ] && echo "空闲内存为 ${aaa}MB"

# 空闲内存是否 < 10240MB 如果小于了就会执行后面的话


 字符串比较

格式1:[  字符串1  =  字符串2 ]                      [  字符串1  !=  字符串2 ]

格式2:[  -z  字符串 ]

常用的测试操作符

=:字符串内容相同

!=:字符串内容不同,! 号表示相反的意思

-z:字符串内容为空

echo $LANG

Linux:shell脚本:基础使用(2),linux,运维,服务器,shell脚本  

查看一下当前的系统语言环境

 [ $LANG !=  "en.US" ] && echo  "系统语言不是en.US"

# 如果输出的字符串不是en.US则执行后面的语句


附加:(提前看看后面会讲)

read -p "是否覆盖现有文件(yes/no)?"  asd
[ $asd = "yes" ] && echo "覆盖" || echo "不覆盖"

# 如果交互输入了yes那执行第二句时候就会输出覆盖,相反则不覆盖


逻辑测试 

格式1:[  表达式1  ]  操作符  [  表达式2  ]  
格式2:命令1  操作符  命令2  

常用的测试操作符

-a或&&:逻辑与,“而且”的意思

-o或||:逻辑或,“或者”的意思

!:逻辑否

echo $USER

#这个是显示当前登录用户的变量

[ $USER != "test" ]  &&  echo "当前用户不是test"

# 当前前面的条件成立会输出&&后面的

[ -d /media/cdrom ] && echo "YES" || echo "NO"

# 测试是否有文件,如果有的话(成立)就输出yes,如果没有(不成立)就输出no

Linux:shell脚本:基础使用(2),linux,运维,服务器,shell脚本

 [ $(ps aux | wc -l) -lt 100 ] && echo "YES" || echo "NO"

 # 这个是测试当前进程数是否小于100

rpm -q sysstatpackage 
 [ $? -eq 0 ] && echo "Installed." || echo "Not installed."

测试软件是否安装  如果安装了则输出installed  如果没安装就输出 not installed

vim rpm_install.sh

#!/bin/bash

# 查看rpm软件是否已安装
rpm -q $1 &> /dev/null

# 已安装输出结果,未安装则进行安装

[ $? -eq 0 ] && echo "$1 软件已安装"  || yum -y install $1 &> /dev/null

if语句

【单分支结构】 

if  条件测试操作
    then   命令序列
fi 

 【双分支结构】

if  条件测试操作
    then   命令序列1
    else   命令序列2
fi

【多分支结构】

if  条件测试操作1

    then  命令序列1

elif  条件测试操作2 

    then  命令序列2

else

  命令序列3

fi

 Linux:shell脚本:基础使用(2),linux,运维,服务器,shell脚本

Linux:shell脚本:基础使用(2),linux,运维,服务器,shell脚本

这个就是一个单分支案例 ,判断是否有文件

 Linux:shell脚本:基础使用(2),linux,运维,服务器,shell脚本

Linux:shell脚本:基础使用(2),linux,运维,服务器,shell脚本

双分支案例,如果可以还是不可以ping通输出的内容不一样 

Linux:shell脚本:基础使用(2),linux,运维,服务器,shell脚本

Linux:shell脚本:基础使用(2),linux,运维,服务器,shell脚本

这个是一个多分支的if语句,只要你需要可以写上无数个elif文章来源地址https://www.toymoban.com/news/detail-645699.html

到了这里,关于Linux:shell脚本:基础使用(2)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux:shell脚本:基础使用(2)

    格式1:test  条件表达式 格式2:[  条件表达式  ]  (前后至少应有一个空格) 常用的测试操作符 -d:测试是否为目录(Directory) -e:测试目录或文件是否存在(Exist) -f:测试是否为文件(File) -r:测试当前用户是否有权限读取(Read) -w:测试当前用户是否有权限写入(Writ

    2024年02月13日
    浏览(53)
  • linux中用shell脚本定时备份重要日志等文件【命令结果输出也在内。按月份自动创建时间自动规划到月份中】、linux中用shell脚本备份文件并自动scp汇总到一个服务器上

    现在甲方有一个需求:要求每月备份系统日志 问题: 1、有37台服务器需要备份且汇总到一

    2024年02月19日
    浏览(59)
  • 【运维工程师学习三】Linux中Shell脚本编写

    Shell程序有很多, 如 Korn shell(ksh)、Bourne Again shell(bash)、C shell(包括csh与tcsh) 等等, 各主要操作系统下缺省的shell: AIX下是 Korn Shell Solaris缺省的是 Bourne shell FreeBSD缺省的是 C shell HP-UX缺省的是 POSIX shell Linux缺省的是 Bourne Again shell 但这种在命令行中的命令是即时输出结果的,不

    2024年02月11日
    浏览(71)
  • Linux:shell脚本:基础使用(4)《正则表达式-grep工具》

    正则表达式定义:         使用单个字符串来描述,匹配一系列符合某个句法规则的字符串 正则表达式的组成:         普通字符串: 大小写字母,数字,标点符号及一些其他符号         元字符:在正则表达式中具有特殊意义的专用字符 正则表达式不能单独使用,需要配

    2024年02月12日
    浏览(38)
  • Linux:shell脚本:基础使用(6)《正则表达式-awk工具》

    awk是行处理器: 相比较屏幕处理的优点,在处理庞大文件时不会出现内存溢出或是处理缓慢的问题,通常用来格式化文本信息 awk处理过程: 依次对每一行进行处理,然后输出 1)awk命令会逐行读取文件的内容进行处理 2)awk以’:’为分隔符,将第1行数据格式化为7段,每段数

    2024年02月12日
    浏览(42)
  • Linux运维之shell基础

    基本语法: 注意事项: ①[ 条件判断式 ],中括号和条件判断式之间必须有空格 ②if 后要有空格 例如,现在写一个if.sh脚本文件 基本语法: 注意事项: (1)case 行尾必须为单词“in”,每一个模式匹配必须以右括号“)”结束。 (2)双分号“;;”表示命令序列结束,相当于

    2024年02月02日
    浏览(58)
  • linux笔记shell脚本基础语法

    vim aaa.sh 输入以下内容,按esc退出 输入:wq保存 输入chmod 777 aaa.sh赋权限 输入./aaa执行看效果 #! 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种 Shell。 echo 命令用于向窗口输出文本。 echo 命令 -e 代表开启换行,如果有n就会换行。c代表关闭换行

    2024年02月07日
    浏览(48)
  • shell脚本使用(宿主机windows-服务器-centos)--用于使用shell脚本方式控制docker容器

    需求: 我想要使得windows上编写shell脚本,并且在这个shell脚本在linux中也可用 shell脚本在windows上无法直接运行,但是有WSL这个linux子系统的工具 可以使得shell脚本在主机上执行 视频讲解连接 方式1 方式2

    2024年02月07日
    浏览(50)
  • Linux实验4 shell脚本编程基础

    1.假设在/tmp下有以当前用户的帐号命名的目录,请在命令行中临时修改环境变量PATH的值,要求该目录的路径附加到该变量的最后。 2.请在命令行中临时设置命令输入提示行格式为:“当前系统时间-用户#”。 3.在命令行定义一个字符串变量str,并且赋值为“test for shell”,然

    2024年04月17日
    浏览(52)
  • 运维 | 查看 Linux 服务器 IP 地址

    大多数在操作 Linux 系统时,我们经常需要知道服务器的 IP 比便于后续的一系列操作,这时候有快速查看主机 IP 的命令行操作,能够有效的帮助我们 本章节主要记录一些常用查看服务器 IP 的命令,希望对大家有所帮助。 查看 Linux 服务器的 IP 地址的命令大体上有以下几种。

    2024年04月27日
    浏览(81)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包