shell循环

一.for循环

  • for循环是编程语言中一种循环语句,而循环语句由循环体及循环的判定条件两部分组成
  • 其表达式为:for(单次表达式;条件表达式;末尾循环体){中间循环体;}
#for语句结构
for 变量名 in 取值列表
do
  命令序列
done

在这里插入图片描述

语句示例补充:下面是求1~100的和的不同表达。(都测试过,这里就不再贴图了,想试的可以复制试试)
格式一:
#!/bin/bash
#
sum=0
for i in $(seq 1 100)      #{135...99}相加为$(seq 1 2 100) 
do
    sum=$[$i+$sum]
done
  echo "0-100的和为:" $sum
格式二:  
#!/bin/bash
#
sum=0
for ((i=1;i<=100;i++))     #隔一个相加, for ((i=1;i<100;i+=2))
do
    sum=$[$i+$sum]
done
  echo "0-100的和为:" $sum

在这里插入图片描述

示例3:根据IP地址检查主机状态;IP地址存放在ipadds.txt文件中,每行一个;
#!/bin/bash
#
a=`cat ~/test/ipadds.txt`

for i in $a
do
  ping -c 3 -i 0.5 -W 2 $i &>/dev/null
  if [ $? -eq 0 ];then
    echo "$i 主机在线"
  else
    echo "$i 主机不在线"
  fi
done

在这里插入图片描述
在这里插入图片描述

二.While循环

根据特定条件反复执行一个命令序列,直到不满足条件为止。
编写时可能会出现死循环,要避免这种情况发生
true(真)和false(假)为特殊条件测试操作,也可以在if语句的条件测试中使用。

  • true作为条件时,表示条件永远成立,无限执行,也就是死循环,需要强制终止
  • false作为条件时,表示条件不成立,不执行命令序列
#while语句结构
while 条件测试操作
do
  命令序列
done

在这里插入图片描述

示例1:批量添加用户; 用户名称以stu开头,按数字顺序进行编号; 
一共添加20个用户,即stu1、stu2、......、stu20 
初始密码均设为123456
#!/bin/bash
#
i=1
while [ $i -le 20 ]
do
  useradd stu$i
  echo "123456" | passwd --stdin $i &>/dev/null
  let i++
done

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、until循环语句

  • 与while相反,重复测试某个条件,只要条件不成立则反复执行。
  • 一般熟练运用while即可,这个很少用。
    在这里插入图片描述
示例:计算1~50的和值;通过循环累加的方式计算1~50的和值
  
#!/bin/bash
#
a=0
sum=0
until [ $a -gt 100 ]
do
  sum=$[$sum+$a]
  let a++
done
echo "1-100的和为:$sum"

在这里插入图片描述

四、结束循环----break和continue

  • reak跳出单个循环
#!/bin/bash
for ((a=1; a<=5; a++))
do
	echo "outer loop: $a"
	for ((b=1; b<=50; b++))
	do
		if [ $b -eq 5 ]
		then
			break
		fi
		echo "inter loop: $b"
	done
done

在这里插入图片描述

  • continue中止某次循环中的命令,但不会完全中止整个命令
#!/bin/bash
for ((a=1; a<=15; a++))
do
	if [ $a -gt 5 ] && [ $a -lt 10 ]
	then
		continue
	fi
	echo "current value: $a"
done

在这里插入图片描述

五、IFS字段分隔符

默认包含 空格,制表符,换行符
查看命令:set | grep IFS
IFS=$' \t\n'

修改成只换行
IFS=$'\n'

IFS=:
IFS=','

IFS.OLD=$IFS
IFS=$'\n'
...
IFS=$IFS.OLD

输出环境变量PATH所包含的所有目录以及其中的所有可执行文件

在这里插入图片描述

六、转义字符

echo -n 表示不换行输出

echo -e 输出转义字符,将转义后的内容输出到屏幕上

常用的转义字符如下:
\b 转义后相当于按退格键(backspace),但前提是"\b"后面存在字符;"\b"表示删除前一个字符,"\b\b"表示删除前两个字符。

\c 不换行输出,在"\c"后面不存在字符的情况下,作用相当于 echo -n; 但是当"\c"后面仍然存在字符时,"\c"后面的字符将不会被输出。

\n 换行,被输出的字符从"\n"处开始另起一行。

\f 换行,但是换行后的新行的开头位置连接着上一行的行尾;

\v 与\f相同;

\t 转以后表示插入tab,即横向制表符;

\r 光标移至行首,但不换行,相当于使用"\r"以后的字符覆盖"\r"之前同等长度的字符;但是当"\r"后面不存在任何字符时,"\r"前面的字符不会被覆盖

\\ 表示插入"\"本身;
// An highlighted block
var foo = 'bar';
// An highlighted block
var foo = 'bar';
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值