Shell脚本学习笔记-循环结构

1. for循环语句

1.1. 语法格式:

for var in list
do
    commands
done
for ((表达式))
do
     commands
done

1.2 简单示例:

#!/bin/sh

#从直接列表读取
echo "从直接列表读取"
for var in 1 2 3
do
  echo "$var"
done
echo "\n"

#从变量读取

echo "从变量读取"
list="a b c"

for var in $list
do
  echo "$var"
done
echo "\n"

#从命令读取

echo "命令读取"
for var in `cat test.txt`
do
   echo "$var"
done
echo "\n"

#从目录读取

echo "从目录读取"
for var in ~/Desktop/Hello*
do
   echo "$var"
done

#for+表达式结构
sum=0
echo "for+表达式结构"
for((i=0;i<=10;i++))
do
   ((sum+=i))
done
echo "sum is :$sum"
echo "\n"

运行结果:

1.3 分隔符

1.3.1 默认分隔符号:空格,制表符,换行符

1..3.2 修改分隔符,e.g. 设置分号 “;”为分隔符:IFS=$";"

备注:分隔符的设置对于直接列表无效,因为对于直接列表来说,是一个已经分隔好的列表了。

2. while与until语句

2.1 while语句,表示当条件满足时,执行循环,语句结构如下:

while test command
do
    commands
done
until test command
do
   commands
done

2.2 简单示例

#!/bin/sh

#while结构
echo "while循环结构"
var=0
while [ $var -lt 3 ]
do
  var=$[ $var + 1 ]
  echo "$var"
done
echo "\n"

#until结构

echo "until循环结构"

var=0
until [ $var -eq 3 ]
do
  var=$[ $var + 1 ]
  echo "$var"
done
echo "\n"

运行结果:

3. 循环的嵌套和控制

3.1 通过循环的嵌套方式输出乘法口诀表,e.g:

#!/bin/sh

for (( i=1; i<=9; i++ ))
do
        for (( j=1; j<=i; j++ ))
        do
                printf '%dx%d=%-3d' $i $j $[$i*$j]
        done
        echo
done

运行结果:

3.2 通过break语句和continue语句可以可以进行循环控制,break语句的作用为跳出循环,continue语句的作用时跳出当前循环,继续下一个循环,e.g:

#!/bin/sh

#break语句,跳出循环
echo "break语句,跳出循环"
for (( i=1; i<=5; i++ ))
do
   if [ $i -eq 3 ]
   then
       break
   fi
   echo "$i"
done
echo

#continue语句,跳出当前循环,继续下一次循环
echo "continue语句,跳出当前循环,继续下一次循环"
for (( i=1; i<=5; i++ ))
do
   if [ $i -eq 3 ]
   then
     continue
   fi
   echo "$i"
done

运行结果:

时间: 2024-10-29 10:46:19

Shell脚本学习笔记-循环结构的相关文章

shell脚本学习笔记系列--1

一.学好shell编程的知识储备 1.相关Linux系统命令应用: 2.Vi/vim 编辑器的熟练使用,相关客户端软件的设置: 3.基础的服务,系统服务ntp,crond,网络服务:nfs,rsync,inotify,sersync,ssh,lanmp等. 补充:清空日志的三种方法: 1)echo  " " > filename.log 2)>filename.log 3)cat  /dev/null > filename.log 注:工作中有的时候不能删除(日志)文

shell脚本学习笔记:通过shell实现linux用户管理和监控

学习shell做的第一个脚本,感谢云知梦李强强老师的shell编程教程 创建shell脚本文件: touch menu.sh touch index.sh touch welcome.sh 赋予脚本文件可执行权限: chmod a+x menu.sh index.sh welcome.sh menu.sh #!/bin/bash #menu.sh function menu(){ title="My Home" name="Randy" time=`date +%Y

shell脚本学习笔记 (sed的高级用法----模式空间和保持空间)

前段时间在学习shell脚本,上次有提到sed的模式空间和保持空间概念,但是一直没有研究好,这两天研究了一下,所以将它发出来,不是很全面,仅仅供大家参考一下. 保持空间sed在正常情况下,将处理的行读入模式空间,脚本中的"sed command(sed命令)"就一条接着一条进行处理,直到脚本执行完毕.然后该行被输出,模式被清空:接着,在重复执行刚才的动作,文件中的新的一行被读入,直到文件处理完毕. 模式空间可以比喻为一个生产线,而保持空间则可以被比喻为仓库,这个比喻希望可以帮助大家理解

Shell 脚本学习笔记十:Shell输入输出重定向

command > file       将输出重定向到 file. command < file       将输入重定向到 file. command >> file     将输出以追加的方式重定向到 file. n > file              将文件描述符为 n 的文件重定向到 file. n >> file             将文件描述符为 n 的文件以追加的方式重定向到 file. n >& m             

shell 脚本学习笔记--函数

一.定义格式 [function] 函数名() { 命令表 } 二.调用方法 先定义,后使用,直接输入函数名,不需要圆括号() 三.函数参数传递方法 可以利用位置参数或者变量进行传递 #! /bin/bash# myfirst.sh testFunction() { echo "$1,$2" #位置参数传递参数 echo "$val1,$val2" #变量传递参数 } val1="test1" val2="test2" tes

shell脚本学习笔记 (流编辑器sed)

sed意为流编辑器(Stream Editor),在Shell脚本和Makefile中作为过滤器使用很普遍,也就是把前一个程序的输出引入sed的输入,经过一系列编辑命令转换为另一种格式输出. sed不只支持正則表達式.它另一些比較厉害的功能. 我给出一个样例,大家看看有什么办法能够解决它吧. <html><head><title>Hello World</title> <body>Welcome to the world of regexp!&l

Shell脚本学习笔记-函数

1.  基本的脚本函数 1.1 函数的定义 function name { commands } 或者 name() { commands } 1.2 简单示例 #!/bin/sh function Func01 { echo "This is function of Func01" } Func02() { echo "This is function of Func02" } Func01 Func02 运行结果: 1.3 函数返回值与退出码 #!/bin/sh

shell脚本学习笔记之常见语法结构用法

一,变量 1.变量赋值和替换 语法:variable=value variable="value1 value2" echo  $variable/$"{variable}"   屏幕上显示赋值 echo  $"{variable+b}"  将已经赋值的变量重新设值,临时生效 echo  $"{variable:=value} 屏幕上显示value(前提是value没有被赋值) echo  $"{variable:-value

shell脚本学习笔记

1.判断符号:中括号[ ] [ ]进行数据的判断,例如我想知道HOME这个变量是否为空,[ -z "$HOME" ],或者两个字符串是否相等,[ "$HOME"  ==  "$MALI" ].由于中括号使用的地方有很多,所以在bash中作为判断式时,中括号的两端需要有空格来分隔.在使用中需要注意: 在中括号内的每个组件都需要有空格键来分隔 在中括号内的变量,最好以双引号括号起来,例如"$HOME" 在中括号内的常量,最好以单或