shell脚本之循环语句和转义字符

for循环语句

  • for语句需要定义一个变量和取值列表,根据不同的取值执行相同的命令,知道变量值用完。
  • 取值列表里包含多个属性相同的对象,例如:IP地址,通信录等。
#for语句结构
for 变量名 in 取值列表
do
  命令序列
done

示例:求1~100的和。

vim he.sh
#!/bin/bash
sum=0
for i in {1..100}
do
   sum=$[$i+$sum]
done
echo "0-100的和为:" $sum

在这里插入图片描述
测试结果:
在这里插入图片描述

示例:提示用户输入一个小于100的整数,并计算从1到该数之间所有整数的和

vim 3.sh
#!/bin/bash
read -p "请输入一个小于100的整数: " n
sum=0
for ((i=1;i<=n;i++))
do
  sum=$[$i+$sum]
done
  echo "从1到到该数之间所有整数的和为: " $sum

在这里插入图片描述

在这里插入图片描述

while循环语句

  • 根据特定条件反复执行一个命令序列,直到不满足条件为止。
  • 编写时可能会出现死循环,要避免这种情况发生
  • true(真)和false(假)为特殊条件测试操作,也可以在if语句的条件测试中使用。
    true作为条件时,表示条件永远成立,无限执行,也就是死循环,需要强制终止
    false作为条件时,表示条件不成立,不执行命令序列
#while语句结构
while 条件测试操作
do
  命令序列
done

示例:计算从1到100所有整数的和

vim w1.sh
#!/bin/bash
sum=0
shu=1

while [ $shu -le 100 ]
do
  sum=$[$sum+$shu]
  let shu++
done
  echo "和为: " $sum

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

示例:猜商品价格游戏;通过变量RANDOM获得随机数;提示用户猜测并记录次数,猜中后退出循环

vim c.sh
price=$[$RANDOM % 1000]
a=0
num=0
echo "猜猜商品价格是多少"
while [ $a -eq 0 ]
do
let num++
read -p "请输入你猜的价格:" b
if [ $b -eq $price ];then
echo "恭喜,你猜对了!"
let a++

elif [ $b -gt $price ];then
 echo "你猜大了!"

elif [ $b -lt $price ];then
 echo "你猜小了!"
fi
done
echo "你总共猜了 $num 次。"

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

until循环语句

  • 与while相反,重复测试某个条件,只要条件不成立则反复执行。
  • 一般熟练运用while即可,这个很少用。

示例:计算从1到100所有整数的和

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

结束循环----break和continue

break跳出单个循环

vim break.sh
#!/bin/bash
for i in $(seq 1 10)
do
   if [[ $i == 3 ]];then
    echo "yes"
    break
else
    echo "no"
    sleep 1
fi
done

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

continue命令 不会跳出所有循环,仅仅跳出当前循环。

vim con.sh
#!/bin/bash
for i in $(seq 1 10)
do
  if [[ $i == 3 ]];then
    echo "yes"
    continue
  else

    sleep 1
  fi
  echo $i
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"前面的字符不会被覆盖

\\ 表示插入"\"本身;

示例:

在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值