linux的shell脚本中if,for,while的解析与应用

linux的shell中有一套自己的流程控制语句,其中包括条件语句(if),循环语句(for,while),它们对我们平时的脚本编写和命令输入都有很大的作用,掌握了这些一定会对我们有很大的帮助。

一.if

if是一个条件判断语句,它的语句结构如下

if  [ condition ];then    # 中括号内的是条件测试语句,表示如果条件为真,则执行then后面的内容

action                              #条件为真时需要执行的动作

elif  [ condition ];then         #执行完上一条的动作后,继续判断elif后的条件,若真则执行下一条动作

action                               #elif条件为真的时候执行的动作

else                       #若elif后的条件为假时(可以没有,并且继续一个新的elif判断)

action                               #若elif后的条件为假时,执行的动作

else                                 #若if的条件为假的时候

action                              #if的条件为假时候,执行的动作

fi                                     #判断结束

注意:(条件测试语句结束后的]后面应该加上分号,当然也可以不加,不加的话then就要写到下一行,个人比较喜欢写到一行,这样显得比较整齐规范)

下面是一个用if判断用户输入的年份是否为闰年的脚本例子

再来看一个if判断成绩的脚本例子

二.for

for 是一个循环结构,它的基本结构如下:

for 变量 in seq字符串   #循环的字符串

do                            #循环开始

action                       #循环的内容

done                         #循环结束

注意:(循环的字符串可以有两种表述方式,一种是类似C语言的表示方法,但是要加双层的小括号,如((i=0;i<=100;i++)),表示的自然就是i每次加1,直到大于100后就终止循环,另外一种就是变量加in加变量的数组,如 i in `ls`表示的就是将ls命令所列出的变量一次赋予i)

下面我们来看一个for循环计算1..100的数字的和的脚本

再将这个问题用另一种for循环的写法写出来

三.while循环

while也是一种循环体,它的基本结构如下:

while  [condition]        #循环的条件

do                    #循环开始的标志

action                  #循环的动作

done                    #循环结束的标志

下面来看一个用while循环实现的10到1的倒计时

最后,举上几个将for,while,if结合使用的例子

1.让用户猜一个1-66之间的数字,如果不对,就提示用户太大还是太小,直到用户输对为30

我们来看看这段脚本的具体的编写思想,首先让用户输入一个数字,这里用到了read命令,read命令是让用户输入一个参数,可以使用-p选项,提示用户输入的内容,如 read  -p  "please input a count(0-66):" count ,这样写也是可以的,然后用到了while循环,当用户输入的数字符合while后面的条件即用户输入的数字是30的时候,就终止循环,并输出恭喜,你对了,否则就进行do后面的内容,首先if判断参数是否大于30,如果是就提示输出数字太大,并且让用户重新输入,否则就判断参数是否小于30,如果是就提示用户数字太小哦啊,并让用户重新输入,然后fi结束if语句,再加上done表示while循环结束。

2.一次性添加多个用户的脚本

首先第一行的seq表示前面的变量number会在1到$1之间循环,$1是用户在执行脚本的时候手动输入的需要具体添加多少个用户的一个位置变量,然后do开始执行循环体,使用id 这条命令判断user$number中的用户是否有的已经存在,若存在,则提示用户,否则就执行添加用户的命令,然后done结束

3.提示用户输入一个数字n,并且计算1到n和与乘机后输出到终端上

首先定义两个变量sum1,sum2分别表示加的和与乘积的和,然后提示用户输入一个想要计算的和的范围,即数字,接着判断,数字是否小于1 ,如果小于1就提示用户太小了,在输入更大的一个数字,如果大于1 ,就执行else后面的for循环的内容,即计算出1到n的所有数字的相加的和与相乘的和,最后fi,if循环结束,输出相加的和的数字和相乘的和的数字。

时间: 2024-10-11 22:16:05

linux的shell脚本中if,for,while的解析与应用的相关文章

Linux/Unix shell 脚本中调用SQL,RMAN脚本

Linux/Unix shell脚本中调用或执行SQL,RMAN 等为自动化作业以及多次反复执行提供了极大的便利,因此通过Linux/Unix shell来完成Oracle的相关工作,也是DBA必不可少的技能之一.本文针对Linux/Unix shell脚本调用sql, rman 脚本给出了相关示例. 一.由shell脚本调用sql,rman脚本 [python] view plain copy print? 1.shell脚本调用sql脚本 #首先编辑sql文件 [email protecte

详解Linux交互式shell脚本中创建对话框实例教程_linux服务器

本教程我们通过实现来讲讲Linux交互式shell脚本中创建各种各样对话框,对话框在Linux中可以友好的提示操作者,感兴趣的朋友可以参考学习一下. 当你在终端环境下安装新的软件时,你可以经常看到信息对话框弹出,需要你的输入.对话框的类型有密码箱,检查表,菜单,等等.他们可以引导你以一种直观的方式输入必要的信息,使用这样的用户友好的对话框的好处是显而易见的.如下图所示: 当你写一个交互式shell脚本,你可以使用这样的对话框来接受用户的输入.whiptail可以在shell脚本中创建基于终端的对

Linux下shell脚本中信号捕获和函数练习脚本之ping一个网段

该脚本主要的目的是练习在Linux bash脚本中捕获信号,顺便练习一下函数的使用,还有就是终止一个正在运行的程序后,该程序打开的文件的后续处理问题等等! 脚本功能: ping一个网段内的IP,检测哪些IP在线,哪些IP不在线 练习的命令: 1.mktemp 用法:#mktemp 1117.www.qixoo.qixoo.com/Path/To/SomeFile.XXX 其中XXX可以为多个,是由系统随机生成的一段字符串 -d  创建为目录 2.ping 测试网络是否通畅 用法:#ping [-

linux下shell脚本中sed命令的用法

先来给一个案例: #将old.sql文件中的符号“|”替换为“,”,并保存到test.sql文件中 sed "s/|/,/g" "old.sql"> test.sql #将test.sql文件中的每一行最后的符号“,”删除 sed -i 's/,$//g' test.sql #在test.sql文件中每行的开头添加左括号“(” sed -i 's/^/(&/g' test.sql #在test.sql文件中每一行的末尾添右括号“)” sed -i 's

Linux shell脚本中shift的用法说明

Linux shell脚本中shift的用法说明 shift命令用于对参数的移动(左移),通常用于在不知道传入参数个数的情况下依次遍历每个参数然后进行相应处理(常见于Linux中各种程序的启动脚本). 示例1:依次读取输入的参数并打印参数个数: run.sh: #!/bin/bash while [ $# != 0 ];do echo "第一个参数为:$1,参数个数为:$#" shift done 输入如下命令运行:run.sh a b c d e f 结果显示如下: 第一个参数为:a

Linux shell脚本中调用另一个shell(exec、source、fork)

  在运行shell脚本时候,有三种方式来调用外部的脚本,exec(exec script.sh).source(source script.sh).fork(./script.sh) exec(exec /home/script.sh): 使用exec来调用脚本相当于在当前shell执行了一条命令,不会产生新的进程,被执行的脚本会继承当前shell的环境变量.但是当exec调用完毕后,当前shell也会结束,剩下的代码不会执行. source(source /home/script.sh) 使

学习Linux shell脚本中连接字符串的方法

这篇文章主要介绍了Linux shell脚本中连接字符串的方法,如果想要在变量后面添加一个字符,可以用一下方法: 代码如下: $value1=home $value2=${value1}"=" echo $value2 把要添加的字符串变量添加{},并且需要把$放到外面. 这样输出的结果是:home=,也就是说连接成功. 又如代码如下: [[email protected] sh]# var1=http://www.3lian.com/etc/ [[email protected] s

Unix/Linux shell脚本中 “set -e” 的作用

"set -e" 是什么? 如下脚本: #!/bin/bash set -e command 1 command 2 ... 在脚本开头加上set -e,这句语句告诉bash如果任何语句的执行结果不是true则应该退出. "set -e" 作用是什么? (1)使用-e帮助你检查错误: (2)防止错误像滚雪球般变大导致一个致命的错误,而这些错误本应该在之前就被处理掉: (3)如果要增加可读性,可以使用set -o errexit,它的作用与set -e相同: &quo

linux shell脚本中的延时

linux shell脚本中的延时 还是使用 sleep 或usleep函数. 详细如下:     1.sleep : 默认为秒. sleep 1s 表示延迟一秒   sleep 1m 表示延迟一分钟   sleep 1h 表示延迟一小时   sleep 1d 表示延迟一天        2.usleep : 默认以微秒.   1s = 1000ms = 1000000us 原文地址:https://www.cnblogs.com/sea-stream/p/12076906.html