shell基础语法:循环for in 和while
参考:
https://blog.csdn.net/wzj_110/article/details/86669426(for in 用法总结)
循环for in,基于列表
语法:
for 变量名 in 列表 do command command ... done
数字类循环
1,seq在in后面的应用
#!/bin/bash #也是产生等差数列-->默认是1 for i in $(seq 1 10) #产生的是一个字符串,默认IFS是以空格隔开! do done
2,{}在in后面的应用
total=0 #全局变量 for i in {1..100} #".."表示连续,默认也是IFS为空格隔开 do ((total+=i)) done echo -e "total is:${total}"
字符类循环
1,普通字符串
#!/bin/bash list="Linux Java C++ Python" for i in $list do echo -e "Language is ${i}" done
补充:
echo -n //不换行输出
echo -e //处理特殊字符输出 参考:https://blog.csdn.net/qq_37595946/article/details/77962963
2,cat在in后面的使用
逐行读取文件的内容(默认是IFS),所以默认不是逐行打印!
IFS的说明
bash shell会将下列字符当作字段分隔符:空格、制表符、换行符
说明:如果在shell在数据中看到这些字符中的任意一个,它就会假定这表明了列表中一个新数据字段的开始!
可以指定多个IFS字符
如果想逐行原样输出
#!/bin/bash # reading content from a file file="日志文件.sh" #将这个语句加入到脚本中,告诉bash shell在数据值中忽略空格和制表,使其只能识别换行符! IFS=$'\n' for std in $(cat $file) do echo "$std" done
3,路径查找
ls在in后面的命令
#!/bin/bash for i in `ls`; #ls可以结合统配符应用! do echo $i is file name\!; #注意:\的应用! done
循环while,基于条件
语法
while condition do command done #无线循环 while : do command done while true do command done for (( ; ; ))
跳出循环
#跳出后续所有循环 break #只跳出单次循环 continue #添加次数 break 2 continue 2