第三章、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++
不同,break
对 case
语句无效
#! /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教程-孟庆昌