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

一、转义字符

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"前面的字符不会被覆盖

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

二、for循环语句

sh脚本echo换行 shell脚本中换行符_sh脚本echo换行

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

 示例一:检测指定范围主机是否通信

#!/bin/bash


for IP in {1..200}
do
{
   ping -c 3 -i 0.5 -w 2 192.168.10.$IP &> /dev/null
   if [ $? -eq 0 ]
   then
     echo "192.168.10.$IP is online"
   else
     echo "192.168.10.$IP is noline"
   fi
}&
done

sh脚本echo换行 shell脚本中换行符_sh脚本echo换行_02

 

sh脚本echo换行 shell脚本中换行符_服务器_03

 示例二:1到100整数的和

[root@localhost ~]# vim demon1.sh

#!/bin/bash
#1到100整数的和
num=0
for ((i=1; i<=100; i++))
do
  num=$[$num + $i]
done
echo "$num"
~                                                                                                                
~

sh脚本echo换行 shell脚本中换行符_服务器_04

 

sh脚本echo换行 shell脚本中换行符_linux_05

示例三:过滤1到100所有整数的奇偶数

#!/bin/bash
for i in {1..100..2}
do
  echo -n "奇数为:"$i
done

for a in {2..100..2}
do
  echo -n "偶数为:"$a
done
~

sh脚本echo换行 shell脚本中换行符_运维_06

sh脚本echo换行 shell脚本中换行符_运维_07

三、while循环语句

sh脚本echo换行 shell脚本中换行符_服务器_08

while 条件
do
命令
done

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

#!/bin/bash
num=0
i=0
while
  [ $num -lt 100 ]
do
  let num++
  i=$[ $num + $i ]
done
  echo "和为:"$i

sh脚本echo换行 shell脚本中换行符_sh脚本echo换行_09

 

sh脚本echo换行 shell脚本中换行符_运维_10

示例:过滤出从1到100所有整数的奇偶数

[root@localhost ~]# vim demon3.sh

#!/bin/bash
i=1
while
[ $i -lt 100 ]
#!/bin/bash
i=1
while
[ $i -lt 100 ]
do
a=$[ $i % 2 ]
if [ $a -eq 0 ]
then
 echo -e "偶数为:"$i
fi
let i++
done

o=1
while
[ $o -lt 100 ]
do
x=$[ $o % 2 ]
if [ $x -eq 1 ]
then
 echo -e "奇数为:"$o
fi
let o++
done

sh脚本echo换行 shell脚本中换行符_服务器_11

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

[root@localhost ~]# vim demon4.sh

#!/bin/bash
read -p "请输入一个小于100的整数" num
i=0
sum=0
while
[ $i -le $num ]
do
sum=$[ $i + $sum ]
let i++
done
echo $sum

sh脚本echo换行 shell脚本中换行符_服务器_12

 

sh脚本echo换行 shell脚本中换行符_运维_13

**** 小于等于****

四、until循环语句

sh脚本echo换行 shell脚本中换行符_bash_14

 执行do语句直到条件为假

until 不成立的条件
	do
	done

示例:计算1-50的和值

sh脚本echo换行 shell脚本中换行符_运维_15

 

sh脚本echo换行 shell脚本中换行符_linux_16

 五、结束循环break和continue

for ((a=1; a<=5;a++))
do
       echo "外循环第$i次"
       if [  $a -eq 3 ];then
            break
        fi
        for ((b=1; b<=5;b++))
        do
        echo "内循环第$b次"
        if [$b -eq 3 ];then
            break
        fi
       done
done

 

sh脚本echo换行 shell脚本中换行符_运维_17

 break 2 跳出2层循环

 break 3 跳出3层循环

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

sh脚本echo换行 shell脚本中换行符_linux_18

sh脚本echo换行 shell脚本中换行符_服务器_19

 

 六、IFS字段分隔符

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

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

IFS=:
IFS=','

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

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