shell循环语句练习(读书笔记)

拥有回忆 提交于 2019-12-23 16:59:04

shell循环结构有三种

  • while语句
  • until语句
  • for语句

while 语法

while 条件(test或[]其他 Linux命令都是有返回值的,命令执行成功就返回0;失败就返回一个非零值,一般情况下是1)
do
  要循环执行的语句
done
#do 和done 之间的即为循环体

while 示例

#! /bin/bash
echo "PID: $$"
echo "PPID: $PPID"
echo "UID: $UID"

sum=0
num=1

while test $num -le 100
do
  sum=$[ $sum+$num ]
  let num=$num+1
done
echo "1到100的和为: $sum"

until语法

#until 直到条件为假的时候执行
until 条件为假执行
do
  要循环执行的语句
done

until示例

#! /bin/bash
echo "PID: $$"
echo "PPID: $PPID"
echo "UID: $UID"

sum=0
num=1

until ! test $num -le 100
do
  sum=$[ $sum+$num ]
  let num=$num+1
done
echo "1到100的和为: $sum"

注意:也就是说
while test $num -le 100 等价于 until ! test $num -le 100


for语法

for var [in list]
do
  要循环执行的语句
done
# [in list] 值表,是一系列以空格分隔的值

for 示例

#! /bin/bash
for i in 1 2 3 4
do
  echo "$i"
done
# 执行结果输出 1 2 3 4 。每次循环的时候从值表中取出一个值(按顺序取),并把它赋值给变量i
# for i in 1 2 3 4 还可以写成 for i in `seq 4`  seq是shell自己的工具,该命令接收一个数字范围,并把它转换为一个列表
# for语句也可以接受字符串组成的列表

下面这个脚本是统计当前目录下非文件夹的文件个数

#! /bin/bash
count=0
for file in `ls`
do
  if ! [ -d $file ];then
    let count=$count+1
  fi
done
echo "`pwd`目录下的文件个数为$count"
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!