shell条件判断的两个特殊设备

/dev/null

linux系统的空设备,也称为位桶,任何写入其中的数据均会被丢弃当你不想将标准化输出显示或者保存至文件时可以将文件从定向到/dev/null

禁止标准化输出 cat $filename > /dev/null

禁止标准化错误 rm $filename > /dev/null

/dev/zero

Linux的输入设备,可以用他初始化文件,可以无限制输出0, 另一个作用是用0去填充一个指定大小的文件

在条件判断语句中&&表示and ||表示or

脚本位置参数:

在linux中参数位置从命令后起依次往后,分别是0,1,2,3。。

其中特殊变量有:

$?: 命令的状态结果;

$#: 传递给脚本或函数的参数的个数;

$*和$@: 引用传递给脚本或函数的参数列表;

$$:脚本执行时所产生的进程

shift [n]:代表轮替

与用户交互:

read 用于读取来自键盘的变数

格式: read [-pt] value

-p:后面直接跟提示字符

-t:后面直接接等待的时间『秒数』

[root@iZ28qzns9m4Z bashtest]# echo $a test
whoaaaaa test
[root@iZ28qzns9m4Z bashtest]# read -p "input:" -t 5 a
input:aaaaa
[root@iZ28qzns9m4Z bashtest]# echo $a
aaaaa
[root@iZ28qzns9m4Z bashtest]#

命令引用

格式一: `命令`

格式二:$(命令)

条件判断语句 if,then,case

只有一个判断式的语句格式:

if[条件];then

命令  ==> 当条件为真时执行,若不只一条时用换行符隔开

fi

需要进行判断时:

if [条件];then

条件成立时,需要输入的内容

elif [条件二];then

条件成立时,需要输入的内容

else

条件与条件一、二均不成立时需要输入的内容

fi

case的判断结构也可以用于多分支:

语法格式:

case $变量名称 in

"第一变量内容")command命令;;

"第二变量内容")command命令;;

"第三变量内容")command命令;;

"第四变量内容")command命令;;

...

*)command命令;;===》在以上条件均不匹配的条件下执行

esac:

循环语句:for while until

在linux 循环语句中 list 是一个重 点,他负责循环时所需要的列表元素,是由一个或多个空格或换行符分隔开的字符串组成,把列表的每个字符串逐个赋值给VARIABLE表示的变量;

生成格式:

数字:① list="1 2 3 4 5 6 10"  ==》 for var in ${list}
                  ② for var in {1..10}

[root@iZ28qzns9m4Z bashtest]# cat 1for.sh
#!/bin/bash
#
#list="1 2 3 4 5 6 10"  #第一种
#for i in ${list}
#do
#    echo $i
#done
===================================
for i in {1..10}   #第二种
doecho $i
done[root@iZ28qzns9m4Z bashtest]#

(2) 直接给出列表
          (3) glob

    #!/bin/bash#for filename in /相对具体的路径/*; dofile $filenamedone注:如果不是相对具体的路径,那么脚本会报错,filename只搜索相对一级路径下的内容不对第二级子目录进行分析

(4) 命令生成

算术运算:

+, -, *, /, %, **

(1) $[$A+$B]

(2) $(($A+$B))

(3) let VARIABLE=$A+$B

(4) VARIABLE=$(expr $A + $B)

增强型赋值:

+=

sum=$[$sum+$i]

let sum+=$i

-=, *=, /=, %=

let count=$[$count+1]   --> let count+=1 --> let count++

let count=$[$count-1] --> let count-=1 --> let count--

[root@iZ28qzns9m4Z bashtest]# sh 4for-2.sh
2500
[root@iZ28qzns9m4Z bashtest]# cat 4for-2.sh
#!/bin/bash
sum=0
for i in $(seq 1 2 100)
dolet "sum+=i"
done
echo $sum
[root@iZ28qzns9m4Z bashtest]#
for 运行前测试语句,用于创建重复循环

格式: for var in ${list}

do

循环命令

done

不带列表的for循环

格式: for var

do

循环命令

done

while循环:

while CONDTION;

do

循环体

done

进入条件:当CONDITION为“真”;

退出条件:当CONDITION为“假”;

while CONDITION;

do

循环体

控制变量的修正表达式

done

while :

do

command

done

until 循环:

until命令和while命令类似,while能实现的脚本until同样也可以实现,但区别是until循环的退出状态是不为0,退出状态是为0(与while刚好相反),即whie循环在条件为真时继续执行循环而until则在条件为假时执行循环。

语法格式:

until expression

do

command

done

[root@iZ28qzns9m4Z bashtest]# cat 1until.sh
#!/bin/bash
declare -i sum=0
declare -i i=1
until [[ "$i" -gt 10 ]]
dolet sum+=ilet i++
done
echo $sum
[root@iZ28qzns9m4Z bashtest]# sh -x 1until.sh
+ declare -i sum=0
+ declare -i i=1
+ [[ 1 -gt 10 ]]
+ let sum+=i
+ let i++
+ [[ 2 -gt 10 ]]
+ let sum+=i
+ let i++
+ [[ 3 -gt 10 ]]
+ let sum+=i
+ let i++
+ [[ 4 -gt 10 ]]
+ let sum+=i
+ let i++
+ [[ 5 -gt 10 ]]
+ let sum+=i
+ let i++
+ [[ 6 -gt 10 ]]
+ let sum+=i
+ let i++
+ [[ 7 -gt 10 ]]
+ let sum+=i
+ let i++
+ [[ 8 -gt 10 ]]
+ let sum+=i
+ let i++
+ [[ 9 -gt 10 ]]
+ let sum+=i
+ let i++
+ [[ 10 -gt 10 ]]
+ let sum+=i
+ let i++
+ [[ 11 -gt 10 ]]
+ echo 55
55
[root@iZ28qzns9m4Z bashtest]#

循环控制:

continue [n]:提前结束本轮循环,而直接进入下一轮;

break [n]:提前结束循环;

while循环:

while CONDITION; do

.......

if CONDITION2; then

break [n]

fi

done

[root@iZ28qzns9m4Z bashtest]# cat 1until.sh
#!/bin/bash
declare -i sum=0
declare -i i=1
until [[ "$i" -gt 10 ]]
dolet sum+=ilet i++
if [ $i -eq 5 ]; thenbreak
fi
echo $sum
done
[root@iZ28qzns9m4Z bashtest]# sh -x 1until.sh
+ declare -i sum=0
+ declare -i i=1
+ [[ 1 -gt 10 ]]
+ let sum+=i
+ let i++
+ '[' 2 -eq 5 ']'
+ echo 1
1
+ [[ 2 -gt 10 ]]
+ let sum+=i
+ let i++
+ '[' 3 -eq 5 ']'
+ echo 3
3
+ [[ 3 -gt 10 ]]
+ let sum+=i
+ let i++
+ '[' 4 -eq 5 ']'
+ echo 6
6
+ [[ 4 -gt 10 ]]
+ let sum+=i
+ let i++
+ '[' 5 -eq 5 ']'
+ break
[root@iZ28qzns9m4Z bashtest]#

while CONDITION; do

......

if CONDITION2; then

continue [n]

fi

......

done

死循环:

while true; do

循环体

if CONDTION; then

break

fi

done

until false; do

循环体

if CONDITION; then

break

fi

done

while循环的特殊用法:

遍历文件的每一行:

while read VARIABLE; do

循环体

done < /PATH/FROM/SOME_FILE

for循环的特殊用法:

for ((expr1;expr2;expr3)); do

循环体

done

expr1: 定义控制变量,并初始赋值;

expr2: 循环控制条件;

进入条件:控制条件为“真”

退出条件:控制条件为“假”

expr3: 修正控制变量

转载于:https://blog.51cto.com/canshan/1696293

Linux shell的条件判断、循环语句及实例相关推荐

  1. VB.net:VB.net编程语言学习之操作符(变量/常量/数据类型/声明)逻辑控制语句(条件判断/循环语句)的简介、案例应用之详细攻略

    VB.net:VB.net编程语言学习之操作符(变量/常量/数据类型/声明)&逻辑控制语句(条件判断/循环语句)的简介.案例应用之详细攻略 目录 VB.net编程语言学习之操作符/变量/常量/ ...

  2. Linux shell if条件判断1

    shell 逻辑控制语句:            分支判断结构        if        case      循环结构         for         while         un ...

  3. python多分支语句实例_Python分支语句与循环语句应用实例分析

    Python分支语句与循环语句应用实例分析 来源:中文源码网    浏览: 次    日期:2019年11月5日 [下载文档:  Python分支语句与循环语句应用实例分析.txt ] (友情提示:右 ...

  4. shell脚本中用到的条件和循环语句

    本博文介绍一下shell脚本中常用的条件和循环语句: 条件语句: 循环语句: 示例: if语句: eg1. eg2. 2.case语句: 简单的case语句: 配合循环的case语句: 3.for语句 ...

  5. Ansible 条件判断 循环 handlers 任务失败 文件管理的使用

    文章目录 Ansible 条件判断 循环 handlers 任务失败 文件管理的使用 1.条件判断 1.1测试多个条件 1.2循环和有条件任务 2. handlers 3. 任务失败 3.1忽略任务失 ...

  6. (一)Shell的条件判断符及特殊变量

    文章目录 1 shell的条件判断 1.1 按照文件类型进行判断 1.2 按照文件权限进行判断 1.3 两个文件之间进行比较 1.4 两个整数之间比较 1.5 字符串的判断 1.6 多重条件判断 2 ...

  7. Python教程学习简记1--Python数据类型和变量 字符串和编码 list和tuple 条件判断 循环 dict和set

    本文主要是学习Python基础: Python数据类型和变量 字符串和编码 list和tuple 条件判断 循环 dict和set 本文根据廖雪峰的官方网站-Python教程,认真学习,一步一步实操并 ...

  8. python赋值布尔变量_python基础 - 变量、布尔值、运算符、条件及循环语句

    文章目录 一.变量 变量包括数字,字母,下划线,且不能以数字开头: python可以同时为多个变量赋值,如a,b = 1,2 ; c,d = 5,"hh": 一个变量可以通过赋值指 ...

  9. shell中的for循环语句

    shell中的for循环语句 for语句 语法: for 变量 in 值1 值2 值3 -- do 语句 done 机理:把各值依次赋给for后的变量,每赋值一次,便执行一次do与done之间的语句 ...

最新文章

  1. 计算机网络实验设计应用题,计算机网络实验三实验报告.doc
  2. [2] SSD配置+训练VOC0712+训练自己的数据集
  3. python log函数_python要点-装饰器
  4. Web认证及API的 使用TOKEN的一些思考
  5. android 获取图片上某一个文字位置_android 获取手机中的所有图片或某一目录下的图片方法...
  6. 数学建模(五)系泊系统设计(16年国赛A题)
  7. 计算机网络技术与应用张基温答案,计算机网络技术与应用教程张基温杜勇刘诗瑾廖伟国董兆军第3章接入技术课件教学.ppt...
  8. 学习笔记-测试利器Mocha
  9. 【爬虫】应用Python爬虫爬取豆瓣租房上的帖子信息
  10. Zxing.jar下载
  11. 复合弓,反曲弓,直拉弓和传统弓哪个适合入门
  12. 在家使用IPv6访问NAS服务器
  13. 秒 毫秒 微秒 纳秒 Hz KHz MHz GHz
  14. 关于Safari的思考(转载)
  15. C++ unordered_map 和 unordered_set 常用函数
  16. fusioncharts 集成Jquery开发插件
  17. c#线程学习之ManualResetEvent和AutoResetEvent的区别!
  18. ad safe5.0.630.9901懂你版补丁包
  19. 固态硬盘的PCIE,SATA,M2,NVMe,AHCI分别什么意思?
  20. 租房指南:网上租房与中介租房利弊大PK!

热门文章

  1. 十分钟学会制作一个漂亮的在线文档
  2. c语言判断输入类型是否为指定类型?
  3. 装系统可能会出现的问题--无法装在该磁盘,因为格式的原因
  4. WebLogic命令行远程部署
  5. 使用Oracle SQL Developer 编写运行 PL/SQL 块
  6. python 获取数据库字段类型_python中如何读取数据库数据类型
  7. 芜湖市计算机应用能力考试,安徽省芜湖市2021年3月计算机等级考试时间
  8. maven配置 mysql_maven项目使用mybatis+mysql
  9. 学习iot_腾讯 AI Lab智慧农业组招收多名算法工程实习生 -- IOT/机器学习方向
  10. linux 安装docker