首页 > 系统相关 >shell复习(3)-循环

shell复习(3)-循环

时间:2024-08-05 11:56:13浏览次数:16  
标签:bin shell 复习 sh echo 循环 done test bash

流程控制

1.if语句

单分支

if 条件表达式
then
    命令序列
fi
#!/bin/bash
N=10
if [ $N -gt 5 ]; then
echo yes
fi
# bash test.sh
yes

双分支

if 条件表达式
then
    命令序列1
else
    命令序列2
fi
#!/bin/bash
N=10
if [ $N -lt 5 ]; then
echo yes
else
echo no
fi
# bash test.sh
no

判断crond进程是否运行

#!/bin/bash
NAME=crond
NUM=$(ps -ef |grep $NAME |grep -vc grep)
if [ $NUM -eq 1 ]; then
 echo "$NAME running."
else
 echo "$NAME is not running!"
fi

检查主机是否存活
>/dev/null 将 ping 命令的输出重定向到 /dev/null,这意味着任何输出都不会显示在终端上。

#!/bin/bash
if ping -c 1 192.168.1.1 >/dev/null; then
echo "OK."
else
echo "NO!"
fi

多分支

if 条件表达式1
then
    命令序列1
elif 条件表达式2
then
    命令序列2
...
else
    命令序列
fi

2.for语句

for 变量名 in 取值列表; do
命令
done

for 的语法也可以这么写:

#!/bin/bash
for i in "$@"; { # $@是将位置参数作为单个来处理
echo $i
}
# bash test.sh 1 2 3
1
2
3

举个例子
检查多个主机是否存活

#!/bin/bash
for ip in 192.168.1.{1..254}; do
 if ping -c 1 $ip >/dev/null; then
 echo "$ip OK."
 else
 echo "$ip NO!"
 fi
done

3.while语句

while 条件表达式; do
命令
done

当条件表达式为 false 时,终止循环。条件表达式为 true,将会产生死循环
实例:逐行处理文本

[root@node1 text]# cat a.txt 
a b c
1 2 3
x y z

在这里插入图片描述
方法一:

#!/bin/bash
cat ./a.txt | while read linf; do
      echo $linf
done       
[root@node1 text]# ./test.sh 
a b c
1 2 3
x y z

方法二:

#!/bin/bash
while read LINE; do
echo $LINE
done < ./a.txt

方法三:

#!/bin/bash
exec < ./a.txt # 读取文件作为标准输出
while read LINE; do
echo $LINE
done

4.break和continue语句

break 是终止循环。
continue 是跳出当前循环。
示例 1:在死循环中,满足条件终止循环

#!/bin/bash
N=0
while true; do
let N++
if [ $N -eq 5 ]; then
break
fi
echo $N
done
# bash test.sh
1
2
3
4

里面用了 if 判断,并用了 break 语句,它是跳出循环。与其关联的还有一个 continue 语句,它是
跳出本次循环。
示例 2:举例子说明 continue 用法

#!/bin/bash
N=0
while [ $N -lt 5 ]; do
let N++
if [ $N -eq 3 ]; then
continue
fi
echo $N
done
# bash test.sh
1
2
4
5

当变量 N 等于 3 时,continue 跳过了当前循环,没有执行下面的 echo。
注意:continue 与 break 语句只能循环语句中使用。

5.case语句

case 模式名 in
模式 1)
      命令
;;
模式 2)
      命令
      ;;
*)
      不符合以上模式执行的命令
esac

举个例子

#!/bin/bash
case $1 in
start)
echo "start."
;;
stop)
echo "stop."
;;
restart)
echo "restart."
;;
*)
echo "Usage: $0 {start|stop|restart}"
esac

结果

[root@node1 text]# bash test.sh 
Usage: test.sh {start|stop|restart}
[root@node1 text]# bash test.sh start
start.
[root@node1 text]# bash test.sh stop
stop.
[root@node1 text]# bash test.sh restart
restart.
[root@node1 text]# 

上面例子是不是有点眼熟,在 Linux 下有一部分服务启动脚本都是这么写的。

6.select语句

select 是一个类似于 for 循环的语句。

select 变量 in 选项 1 选项 2; do
      break
done

例子

#!/bin/bash
select mysql_version in 5.1 5.6; do
echo $mysql_version
done
# bash test.sh
1) 5.1
2) 5.6
#? 1
5.1
#? 2
5.6

标签:bin,shell,复习,sh,echo,循环,done,test,bash
From: https://blog.csdn.net/sjsnsvsjsm/article/details/140920601

相关文章

  • Shell编程 --基础语法(2)
    文章目录Shell基础语法运算符算术运算符关系运算符bool运算符逻辑运算符字符串运算符文件测试运算符read命令printf命令总结ShellShell编程Shell是一种程序设计语言。作为命令语言,它交互式解释和执行用户输入的命令或者自动地解释和执行预先设定好的一连串的命令;......
  • Java流程控制语句结构--循环结构
    目录while循环do…while循环for循环三种循环的死循环形式while循环while是最基本的循环,它的结构为:while(布尔表达式(判断条件)){//循环内容}只要布尔表达式为true,循环就会一直执行下去。do…while循环对于while语句而言,如果不满足条件,则不能进入循环。但有时候我......
  • Java流程控制04:循环结构
    顺序结构的程序语句只能被执行一次。如果您想要同样的操作执行多次,就需要使用循环结构。Java中有三种主要的循环结构:while循环do…while循环for循环1.while循环while是最基本的循环,它的结构为:while(布尔表达式){//循环内容}只要布尔表达式为true,循环就会一......
  • shell的变量——变量的运算
    1、写一个shell脚本,计算1+2+……+n共n个值的和,n值由用户输入#原理[root@se7enshell]#a=10[root@se7enshell]#seq-s'+'1$a1+2+3+4+5+6+7+8+9+10[root@se7enshell]#seq-s'+'1$a|bc55#配置文件[root@se7enshell]#vimnum.sh[root@se7enshell]#catn......
  • 优化 PySpark 代码:在保持功能的同时避免 For 循环并减少
    frompyspark.sqlimportWindowfrompyspark.sqlimportfunctionsasFimportfunctoolsfromdatetimeimportdatetimedefgenerate_new_rating_data(w_df,count_a,distinct_a,flag_a,suffix):ifflag_a:w_df=w_df.where((w_df[f&qu......
  • Linux--shell脚本语言—/—<2>
    一、shell基本语法1、shell字符串        字符串(String)就是一系列字符的组合。字符串是Shell编程中最常用的数据类型之一(除了数字和字符串,也没有其他类型了)字符串可以由单引号''包围,也可以由双引号""包围,也可以不用引号。它们之间是有区别的。 1) 字符串举......
  • Linux--shell脚本语言—/—<1>
    一、shell简介        Shell是一种程序设计语言。作为命令语言,它交互式解释和执行用户输入的命令或者自动地解释和执行预先设定好的一连串的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支        Shel......
  • Shell编程 --基础语法(1)
    文章目录Shell编程基础语法变量定义变量使用变量命令的使用只读变量删除变量传递参数字符串获取字符串长度字符串截取数组定义方式关联数组获取数组的长度总结Shell编程Shell是一种程序设计语言。作为命令语言,它交互式解释和执行用户输入的命令或者自动地解释和......
  • Shell文本处理秘籍:掌握这11种工具,让数据处理如虎添翼!
    引言在Linux信息环境,文本数据处理是一项基础而重要的技能。对于广大Linux用户而言,掌握Shell环境下的文本处理工具不仅能提高工作效率,还能在面对复杂数据时游刃有余。本文将介绍,那些在文本处理中不可或缺的11种命令工具,让数据处理技能更上一层楼。目录find:find命令无......
  • 灰狼优化算法(GWO)与门控循环单元(GRU)结合的预测模型(GWO-GRU)及其Python和MATLAB实现
    ####一、背景深度学习已成为解决复杂时序数据预测问题的重要工具。在众多神经网络架构中,门控循环单元(GatedRecurrentUnit,GRU)凭借其在捕捉时间序列数据中的长程依赖性和相对较低的计算复杂度而受到广泛关注。此外,优化算法在深度学习模型的训练中扮演着至关重要的角色。灰......