Shell中的流程控制(if/case/for/while)

这篇具有很好参考价值的文章主要介绍了Shell中的流程控制(if/case/for/while)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Shell中的流程控制(if/case/for/while)

Shell中的流程控制(if/case/for/while),linux,linux,shell

1 if判断

1.1 单分支

1)第一种写法:

if [ 条件判断式 ];then

​ 程序

fi

2)第二种写法:

if [ 条件判断式 ]

then

​ 程序

fi

  • if后要有空格
  • [ 条件判断式 ],中括号和条件判断式之间必须有空格
[root@localhost home]# cd /home/jiaoben/; ls -l
总用量 16
-rw-r--r--. 1 root root  27 627 23:38 hello.sh
-rwxr-xr-x. 1 root root  52 628 22:05 parameter.sh
-rw-r--r--. 1 root root 450 629 00:03 para.sh
-rw-r--r--. 1 root root 323 629 23:58 sum.sh
[root@localhost jiaoben]# num=18
[root@localhost jiaoben]# if [ $num -gt 16 ]; then echo "$a大于16"; fi
25大于16
[root@localhost jiaoben]# num=15
[root@localhost jiaoben]# if [ $num -gt 16 ]; then echo "$a大于16"; fi
[root@localhost jiaoben]#
  1. 条件判断-a, -o

-a 相当于and

-o 相当于or

[root@localhost jiaoben]# num=25
[root@localhost jiaoben]# if [ $num -gt 20 ] && [ $num -lt 30 ]; then echo ok; fi
ok
[root@localhost jiaoben]# if [ $num -gt 20 -a $num -lt 30 ]; then echo ok; fi
ok
[root@localhost jiaoben]# if [ $num -lt 20 -o $num -gt 30 ]; then echo ok; fi
[root@localhost jiaoben]# num=40
[root@localhost jiaoben]# if [ $num -lt 20 -o $num -gt 30 ]; then echo ok; fi
ok
[root@localhost jiaoben]# num=18
[root@localhost jiaoben]# if [ $num -lt 20 -o $num -gt 30 ]; then echo ok; fi
ok

  1. 单分支脚本

if_demo1.sh

#!/bin/bash
if [ $1 = kevin ]
then
        echo "welcome, kevin"
fi

执行脚本:

[root@localhost jiaoben]# chmod +x if_demo1.sh
[root@localhost jiaoben]# ./if_demo1.sh kevin
welcome, kevin
[root@localhost jiaoben]#

1.2 多分支

if [ 条件判断式 ]

then

​ 程序

elif [ 条件判断式 ]

then

​ 程序

else

​ 程序

fi

  • if后要有空格
  • [ 条件判断式 ],中括号和条件判断式之间必须有空格

if_demo2.sh

#!/bin/bash
if [ $1 -ge 90 ]
then
        echo "成绩优秀"
elif [ $1 -ge 75 -a $1 -lt 90 ]
then
        echo "成绩良好"
elif [ $1 -ge 60 -a $1 -lt 75 ]
then
        echo "成绩及格"
else
        echo "成绩不及格"
fi

执行脚本:

[root@localhost jiaoben]# chmod +x if_demo2.sh
[root@localhost jiaoben]# ./if_demo2.sh 93
成绩优秀
[root@localhost jiaoben]# ./if_demo2.sh 80
成绩良好
[root@localhost jiaoben]# ./if_demo2.sh 62
成绩及格
[root@localhost jiaoben]# ./if_demo2.sh 58
成绩不及格

2. case语句

case语句写法:

case $变量名 in

“值 1”)

​ 如果变量的值等于值1,则执行程序1

;;

“值2”)

​ 如果变量的值等于值2,则执行程序2

;;

​ …省略其他分支

*)

​ 如果变量的值都不是以上的值,则执行此程序

;;

注意:

1)case行尾必须为单词“in”,没一个模式匹配必须以右括号“)”结束

2)双分号“;;”表示命令序列结束,相当于java中的break

3)最后“*)”表示默认模式,相当于java中的default

case_demo.sh

#!/bin/bash
case $1 in
java)
        echo "买了本Java的书籍"
;;
python)
        echo "买了本Python的书"
;;
golang)
        echo "买了本Golang的书"
;;
*)
        echo "================"
;;
esac

执行脚本case_demo.sh

[root@localhost jiaoben]# chmod +x case_demo.sh
[root@localhost jiaoben]# ./case_demo.sh java
买了本Java的书籍
[root@localhost jiaoben]# ./case_demo.sh golang
买了本Golang的书
[root@localhost jiaoben]# ./case_demo.sh php
================

3 for循环

3.1 第一种写法 (())

for (( 初始值;循环控制条件;变量变化 ))

do

​ 程序

done

for_demo1.sh

#!/bin/bash
for (( i=1; i<=$1; i++ ))
do
        sum=$[ $sum + $i ]
done
echo $sum

执行脚本:

[root@localhost jiaoben]# sh for_demo1.sh 100
5050

3.2 第二种写法 in

for 变量 in 值1 值2 值3…

do

​ 程序

done

  1. 命令行方式
[root@localhost jiaoben]# for book in Java Python Golang; do echo $book; done
Java
Python
Golang
[root@localhost jiaoben]# for i in {1..100}; do sum=$[$sum+$i]; done; echo $sum
5050
[root@localhost jiaoben]#
  1. 脚本

for_demo2.sh

#!/bin/bash
for num in $*
do
        echo $num
done

执行脚本:

[root@localhost jiaoben]# sh for_demo2.sh 1 2 3 4 5 6 7 8
1
2
3
4
5
6
7
8
  1. 测试 ∗ 和 *和 @的区别

双引号包含时,$*会将所有的参数作为一个整体,以$1 $2 $3 … n 的形式列出所有参数; n的形式列出所有参数; n的形式列出所有参数;@会将各个参数分开

for_demo3.sh

#!/bin/bash
echo '================$*================='
for lanague in $*
do
        echo $lanague
done

echo '================$@================='
for lanague in $@
do
        echo $lanague
done

执行脚本:

[root@localhost jiaoben]# ll | grep for_demo3.sh
-rw-r--r--. 1 root root 181 71 23:20 for_demo3.sh
[root@localhost jiaoben]# chmod u+x for_demo3.sh
[root@localhost jiaoben]# ll | grep for_demo3.sh
-rwxr--r--. 1 root root 181 71 23:20 for_demo3.sh
[root@localhost jiaoben]# ./for_demo3.sh Java Python Golang Sql
================$*=================
Java
Python
Golang
Sql
================$@=================
Java
Python
Golang
Sql

修改脚本for_demo3.sh

#!/bin/bash
echo '================$*================='
for lanague in "$*"
do
        echo $lanague
done

echo '================$@================='
for lanague in "$@"
do
        echo $lanague
done

执行脚本:

[root@localhost jiaoben]# ./for_demo3.sh Java Python Golang Sql
================$*=================
Java Python Golang Sql
================$@=================
Java
Python
Golang
Sql

4 while循环

while [ 条件判断式 ]

do

​ 程序

done

4.1 demo1

while_demo.sh

#!/bin/bash
num=1
while [ $num -le $1 ]
do
        sum=$[ $sum + $num]
        num=$[$num + 1]
done
echo $sum

执行脚本:

[root@localhost jiaoben]# sh while_demo.sh 100
5050

4.2. demo2测试let

修改while_demo.sh

#!/bin/bash
num=1
while [ $num -le $1 ]
do
        let sum+=num
        let num++
done
echo $sum

执行脚本:文章来源地址https://www.toymoban.com/news/detail-515870.html

[root@localhost jiaoben]# sh while_demo.sh 100
5050

到了这里,关于Shell中的流程控制(if/case/for/while)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux--shell编程中的if语句

        1. if if 语句语法格式: if condition then     command1     command2     ...     commandN fi      1)判断当前系统是否有多个ssh进程,如果有则打印true test12.sh #!/bin/bash if   [   $(ps -ef | grep -c \\\"ssh\\\")   - gt 1   ] then     echo   \\\"true\\\"   fi       2)判断/media/cdrom文件是否存在,若

    2024年02月21日
    浏览(42)
  • Linux系统Shell脚本第三章:for、while循环及脚本实操

    目录 一、for循环 1、基本格式 2、类C语言格式 二、while循环 1、基本格式 2、死循环语句 三、跳出循环 1、continue跳出循环 2、break跳出循环 四、常用循环脚本实例 1、循环打印9*9乘法表 2、循环ping测试某个网段网络连通性 3、while死循环实现猜数字游戏 用于已知循环次数的场景

    2024年01月16日
    浏览(44)
  • Linux の shell 流程控制

    条件控制 (( )) for 循环 while 读取键盘信息 无限循环 until 循环 case … esac

    2024年02月16日
    浏览(33)
  • Linux操作系统--shell编程(流程控制)

    1.if 条件判断 ①.单分支判断 if [ 条件判断式 ];then 程序 fi 该语法结构还可以写成: if [ 条件判断式 ] then 程序

    2024年02月11日
    浏览(49)
  • Linux【实操篇】—— Shell 编程入门、变量、运算符、条件判断、流程控制

    目录 一、Shell 编程入门 1. 认识 Shell 2. Shell 脚本的创建与执行         二、Shell 变量 1. 系统变量和自定义变量 2. 变量的基本规则 3. 设置环境变量 4. 位置参数变量 5. 预定义变量 三、运算符 四、条件判断 五、流程控制 1. if 语句 2. case 语句 3. for 循环 4. while 循环 六、rea

    2024年02月03日
    浏览(41)
  • Python条件控制和循环语句(if while for )

    同样需要注意冒号和缩进。另外,在 Python 中没有 do..while 循环。 while+else whlie+break break跳出本层循环的含义 标志位的使用 while+continue 死循环: 程序中坚决不能出现死循环 for循环不会出现死循环,它的循环条件不是我们来控制,是人家内部已经控制好了 for循环和while循环都是

    2024年02月11日
    浏览(46)
  • Linux中的shell脚本之流程控制&&循环遍历

    3 条件判断 4 流程控制语句 1)if 语句 案例,用户输入用户名和密码,判断用户名是否是admin,密码是否是123,如果正确,则显示登录成功 首先我创建了shell文件,touch getpawer 其中getpawer 是我自己命的名 效果展示如下: 2)case语句:用case语句匹配一个值与一个模式,如果匹配成

    2024年04月16日
    浏览(42)
  • 【算法笔记】求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。

    求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等及条件判断语句(A?B:C)、位运算、递归、公式、sizeof。 习题链接:题目链接 该题把我们的所有能用的方法都给限制死了,我们只能用一些的特殊的方法来做。不知道大家在思考的过程中考没考虑过

    2024年02月07日
    浏览(58)
  • shell脚本while循环、read读取控制台输入与函数

    声明: 以下为个人笔记,内容不完全正确,请谨慎参考。 while循环结构 while [条件判断] do 程序 done 脚本示例: 点击查看代码 简易写法: 点击查看代码 read 读取控制台输入 基本语法: read(选项)(参数) 1、选项 -p: 指定读取值时的字符; -t: 指定读取值等待时间(秒-s)如

    2024年04月22日
    浏览(52)
  • 【Linux | Shell】结构化命令 - if 语句

    前面文章介绍了一些Shell脚本的基础知识,也了解了怎样构建一个shell脚本文件,让shell脚本执行一些基础的指令,但都是从上到下依次执行的。在实际shell编程中,会遇到很多情况需要判断条件,按不同条件去执行不同的命令。本文注意介绍shell编程中的一些结构化命令条件语

    2024年02月16日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包