第三章、shell循环语句

shell循环语句小结

for

for ... in ... do ... done

for var in var1 var2 ... varn
do
sentence1
sentence2
...
done

示例1,输出a 2 cc,每个元素一行:

for i in a 2 cc; do echo $i; done

示例2,输出当前路径下的所有文件名,每个文件名一行:

for filename in `ls`; do echo "${filename}"; done

示例3,输出5-10

$(seq 5 10)

$(seq start interval end) 并且包含 end

for i in $(seq 5 10); do echo "${i}"; done

示例4,使用{1..10} 或者 {a..z}

for i in {1..10}; do echo $i; done
for i in {b..m}; do echo $i; done

for((...;...;...)) do ... done

for((expression;condition;expression))
do
sentence1
sentence2
...
done

示例,输出4 - 15,其中 % 3 == 0 要乘以 10 否则 + 8

for((i=4;i<=4;i++))
do
echo ${i}
if [ `expr ${i} % 3` -eq 0 ]
then
echo `expr $i \* 10`
else
echo `expr $i + 8`
fi
done

while

条件为假的时候,结束循环

while condition
do
sentence1
sentence2
...
done

示例,文件结束符为Ctrl+d,输入文件结束符后read指令返回false。

while read name
do
echo "${name}"
done

until

条件为真的时候,结束循环
until condition
do
sentence1
sentence2
...
done

示例,当用户输入yes或者YES时结束,否则一直等待读入。

until [ "${word}" == "YES" ] || [ "${word}" == "yes" ]
do
read -p "Please input yes/YES to stop this program: " word
done

break & continue

break

break可以用于跳出当前循环,不过和 c/c++不同,breakcase 语句无效

#! /bin/bash
while read name
do
for((i=1;i<=10;i+=1))
do
echo -e "$i \c"
done
echo ""
case "${name}" in
'123')
continue;;
'xyg')
break;;
*)
echo 'good day';; # 必须加上 ;;
*)
echo '12312' # 最后一个可以不加 ;;
esac
done

计算第一个 i ^ 4 % 7 = 4

for((i=1;1==1;i+=1))
do
fact=1
for((j=1;j<=4;j+=1))
do
fact=`expr ${fact} \* ${i}`
done
if [ `expr ${fact} % 7` -eq 4 ]
then
break
fi
done
echo $i

说实话,这个1有点猝不及防,因为bash中True为0

for((i=1;1;i+=1))
do
if [ $i -eq 10 ]
then
break
fi
done
echo $i

continue

#! /bin/bash
for ((i=1;i<=10;i++))
do
if [ `expr ${i} % 2` -eq 0 ]
then
echo $i
else
continue
fi
done

杀死进程

如果可以打开该程序,则输入Ctrl+c即可。

否则可以直接关闭进程:

使用top命令找到进程的PID
输入kill -9 PID即可关掉此进程。
shift + m是按照占用的内存排序
找不看,基本看的是 cpu 占用率。

参考文献

强烈推荐 Y总的基础课
linux教程-孟庆昌

posted @   lucky_light  阅读(103)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示