Shell 脚本学习笔记八:流程控制

一、 if else      /// 如果else分支没有语句执行,就不要写这个else

1、if 语句

if condition

then

command1

command2

command3

...

fi

/// 写成一行:

if [ $(ps -ef | grep -c "ssh") -gt 1 ]; then echo "true"; fi

2、if else

if condition

then

command1

command2

...

else

command

fi

#!/bin/bash

num1=100;
num2=100;

if test $[num1] -eq $[num2]
then
    echo "两个数相等";
else
    echo "两个数不相等";
fi

输出以下结果:

两个数相等

3、if else-if else

if condition

then

command1

command2

elif condition

then

command

else

command

fi

#!/bin/bash

a=10
b=20

if [ $a == $b ]
then
    echo "a 等于 b"
elif [ $a -gt $b ]
then
    echo "a 大于 b"
elif [ $a -lt $b ]
then
    echo "a 小于 b"
else
    echo "没有符合的条件"
fi 

输出以下结果:

a 小于 b

二、for 循环

for var in item1 item2 ... itemN

do

command1

command2

...

done

/// 写成一行

for var in item1 item2 ... itemN; do command1; command2; ... done;

#!/bin/bash

for loop in 1 2 3 4 5
do
    echo "$loop";
done

输出以下结果:

1
2
3
4
5

for str in "This is a string"
do
    echo "$str";
done

输出以下结果:

This
is
a
string

三、while 语句

while condition

do

command1

done

while [ $cnt -le 5 ]
do
    echo $cnt
    let "cnt++"
done

    echo "按下 <CTRL-D> 退出"

  while循环可用于读取键盘信息。下面的例子中,输入信息被设置为变量FILM,按<Ctrl-D>结束循环

echo "按下 <CTRL-D> 退出"

echo -n "输入你最喜欢的电影名:"

while read FILM

do

echo "是的!$FILM 是一部好电影"

done

四、无限循环

1、

while :

do

command

done

2、

while true

do

command

done

3、

for (( ; ; ))

五、until 循环

  • until循环执行一系列命令直至条件为真时停止
  • until循环与while循环在处理方式上刚好相反
  • 条件可为任意测试条件,测试发生在循环末尾,因此循环至少执行一次
  • 一般while循环优于until循环,但在某些时候—也只是极少数情况下,until循环更加有用

until condition

do

command

done

六、case

case 值 in

模式1)

command1

command2

...

;;

模式2)

command1

command2

...

;;

esac

#!/bin/bash

echo "输入 1 到 4 之间的数字"
echo "你输入的数字为:"

read aNum

case $aNum in
    1)
      echo "你选择了 1"
      ;;
    2)
          echo "你选择了 2"
          ;;
    3)
          echo "你选择了 3"
          ;;
    4)
          echo "你选择了 4"
          ;;
esac

七、break

跳出所有循环(终止执行后面的所有循环)

    while :
    do
        echo -n "请输入 1 到 5 之间的数字:"
        read aNum
        case $aNum in
            1|2|3|4|5)
                echo "你输入的数字为: $aNum"
                ;;
            *)
                echo "你输入的数字不是 1 到 5 之间的!结束游戏"
                break
                ;;
        esac
    done

八、continue

跳出本次循环

时间: 2024-12-25 00:57:50

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             

python学习笔记3—流程控制if、for、while

流程控制if if 语句 if expression: statement(s) else else语句: if 语句,else语句 if expression: statement(s) else: statement(s) elif语句: if expression1: statement1(s) elif expression2(s): statements2(s) else: statement2(s) 注:Python使用缩进作为其语法分组的方法,建议使用4个空格 逻辑值(bool)包

【原】Java学习笔记005 - 流程控制

1 package cn.temptation; 2 3 public class Sample01 { 4 public static void main(String[] args) { 5 // 程序的流程控制(流程结构):顺序结构.选择结构.循环结构 6 7 // 顺序结构:从上向下,顺序执行 8 System.out.println("出生..."); 9 System.out.println("享受人生..."); 10 System.out.print

No2. 学习笔记_流程控制

1 import java.util.Scanner; 2 public class HelloForWhile { 3 4 /** 5 * 文档注释,程序名称:HelloForWhile 流程控制 开发时间:2016-03-07 作者:嘿嘿 6 * */ 7 public static void main(String[] args) { 8 // TODO Auto-generated method stub 9 System.out.println("test"); 10 int

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