Shell循环语句与函数
目录
一、for语句的结构
读取不同的变量值,用来逐个执行同一个组命令
格式;
for 变量名 in 取值列表
do
命令序列
done
例如:
for i in {1…10}——每次递增1 for i in {1…10…2}——每次递增2
for i in $(seq 1 10) for i in $(seq 1 2 10) #seq指的是连续的
for ((i=1;i<=10;i++)) for ((i=1;i<=10;i+=2))
do
echo $i
done
for ((i=1;i<=10;i++));do echo $i;done
实例:计算从1到100多有整数和
#!/bin/bash
sum=o
for ((i=1;i<=100;i++))
do
sum= [ [ [sum+ i ] d o n e e c h o " i] done echo " i]doneecho"sum"
二、IFS字段分隔符
默认包含空格,制表符,换行符
set |grep IFS
建议字段分隔符的环境变量不要改,如果要改的话做下备份
IFS.OLD=$IFS
IFS=$’\n’
IFS=$IFS.OLD
三、while语句的结构
重复测试某个条件,只要条件成立则反复执行
while 条件测试操作
do
命令序列
done
实例:计算从1到100多有整数和
#!/bin/bash
i=0
while [ i − l e 100 ] d o s u m = i -le 100 ] do sum= i−le100]dosum=[ s u m + sum+ sum+i]
let i++
done
echo “$sum”
四、until语句结构
重复测试某个条件,只要条件不成立则反复执行
until 条件测试操作
do
命令序列
done
五、echo
echo -n 表示不换行输出
echo -e 输出转义符,将转义后的内容输出到屏幕上
常用的转义字符如下
\b:转义后相当于按退格键(backspace),但前提是\b后面存在字符;\b表示删除前一个字符,\b\b表示删除前两个字符
\b:
\b\b:
\c:不换行输出,在\c后面不存在字符的情况下,作用相当于echo -n;但是当\c后面的字符将不会被输出
\c无字符:
\c有字符:
\n:换行,被输出的字符从\n出开始另起一行
\f:换行,但是换行后的新行的开头位置连接着上一行的行尾
\v:与\f相同
\t:转以后表示插入tab,即横向制表符
\r:光标移至行首,但不换行,相当于使用\r以后的字符覆盖\r之前同等长度的字符,但是当\r后面不存在任何字符时,\r前面的字符不会被覆盖
\ \:表示插入\本身
六、break跳出单个循环
for ((a=1;a<=5;a++))
do
ehco “outer loop: $a”
for ((b=1;b<=50;b++))
do
if [ $b -eq 5 ]
then
break
fi
echo “inter loop: $b”
done
done
七、contiune中止某次循环中的命令,但不会完全中止整个命令
for ((a=1;a<=15;a++))
do
if [ $a -gt 5 ] && [ $a -lt 10 ]
then
continue
fi
echo “current value:$a”
done