首页 > 系统相关 >shell脚本for循环、while循环、until循环

shell脚本for循环、while循环、until循环

时间:2023-08-16 19:12:43浏览次数:33  
标签:shell sum echo 命令 while 循环 awk

1.AWK

在 Linux/UNIX 系统中,awk 是一个功能强大的编辑工具,逐行读取输入文本,默认以空格或tab键作为分隔符作为分隔,并按模式或者条件执行编辑命令。而awk比较倾向于将一行分成多个字段然后进行处理。AWK信息的读入也是逐行.
指定的匹配模式进行查找,对符合条件的内容进行格式化输出或者过滤处理,可以在无交互
的情况下实现相当复杂的文本操作,被广泛应用于 Shell 脚本,完成各种自动化配置任务。

工作原理:

前面提到 sed 命令常用于一整行的处理,而 awk 比较倾向于将一行分成多个“字段”然后再进行处理,且默认情况下字段的分隔符为空格或 tab 键。awk 执行结果可以通过 print 的功能将字段数据打印显示。

命令:awk     选项        模式      处理的动作

-F  指定分隔符
-v  自定义变量
-f  脚本

1.1print动作

 

 

 1.2常见的内置变量

  • FS :指定每行文本的字段分隔符,缺省为空格或制表符(tab)。与 “-F”作用相同 -v "FS=:"

  • OFS:输出时的分隔符

  • NF:当前处理的行的字段个数

  • NR:当前处理的行的行号(序数)

  • $0:当前处理的行的整行内容

  • $n:当前处理行的第n个字段(第n列)

  • FILENAME:被处理的文件名

  • RS:行分隔符。awk从文件上读取资料时,将根据RS的定义就把资料切割成许多条记录,而awk一次仅读入一条记录进行处理。预设值是\n

 

 

 

2.for循环

for是用于已知循环次数的脚本命令

格式: for (变量) in (次数);do (循环的事件);done(结束)

当使用c语言格式表示的时候:for (( 表达式1; 表达式2; 表达式3 )); do 命令; done

例子:

一加到十,连加

 

 十以内的偶数相加

 

 用for编写99乘法表

 2.while和until

while和until与for相比

for需要知道循环次数,while和until只知道停止条件,不知道次数,直到达到条件就会退出,注意需要退出命令,不然会进入死循环。

命令格式:

while
当命令判断为假时停止

until
当命令判断为真时停止

 

#!/bin/bash
数值
while [ 条件 ]    条件为真是do 假时done
do

done
echo

例子,用while求100以内数字相加

 

批量建立用户

 

 

双重循环及跳出循环

  • break跳出单个循环后面加数字2则代表跳出两层循环

  • continue终止某次循环中的命令,但是不会完全终止命令

  • exit直接退出脚本

 

 

 

 菜单

WORDS 变量被展开,生成一个词的列表。展开的词集合被打 在标准错误输出设备上,每个以一个数字做前缀。如果没有 `in WORDS'则假定使用`in "$@"'。PS3提示符会被显示并且从标准输入读入一行 如果该行由被显示的词对应的数字组成,则 NAME 变量被设定为相应的词。如果行为空,则 WORDS 变量和提示符被重新显示。如果读取了文件结束符,则命令完成。读入任何其他的值会导致 NAME 变量被设定为空。读入的行被存放在变量 REPLY 中。COMMANDS 命令在每次选择之后执行直到执行一个 break 命令。

命令格式:
select: select NAME [in 词语 ... ;] do 命令; done

  从列表中选取词并且执行命令。

例子:

点菜菜单

#!/bin/bash
sum=0
PS3="请输入(1-6):"
MENU="
宫保鸡丁
酸菜鱼
鱼香肉丝
佛跳墙
水煮肉片
点菜结束
"

select menu in $MENU
do
case $REPLY in
1)
echo $menu 价格是20
let sum+=20
;;
2)
echo $menu 价格是60
let sum+=60
;;


3)
echo $menu 价格是25
let sum+=25
;;

4)
echo $menu 价格是150
let sum+=150
;;

5)
echo $menu 价格是60
let sum+=60
;;

6)
echo "点菜结束"
break
;;

*)
echo "点菜错误,请重新选择"
;;

esac
done

echo "总价是$sum"

 

 

 

标签:shell,sum,echo,命令,while,循环,awk
From: https://www.cnblogs.com/lwqpl/p/17632181.html

相关文章

  • Python的循环语句
    循环语句可以让我们的代码重复的去执行while循环:  while条件:    代码 过程:判断while循环的条件是否为真,如果真,执行代码.然后再次判断条件.....直到条件为假循环结束案例1:whileTrue:#死循环print("喷死你")以上这段代码是一个死循环,因为判断......
  • 用shell脚本设计的『扫雷』
    不知道为什么,这个脚本和CentOS7不兼容。载入脚本后,用WASD键控制光标移动,按空格挖开地块,挖到的数字是地块周围的地雷数量,挖到地雷后游戏失败;按F标记有地雷的地块,按E表示可能有地雷。已挖开的地块无法被标记。将所有地雷标记完毕后游戏胜利。按Q键退出游戏。无论如何退出游戏,脚......
  • HDFS shell 常用命令
    创建多级目录(-p):hadoopfs-mkdir-p/test/a/b 展示目录:hadoopfs-ls/ 递归展示:hadoopfs-ls-R/ 从HDFS上下载文件到本地:hadoopfs-get/test/a/b/h.txthadoopfs-copyToLocal  /test/a/b/h.txt 从本地上传文件到HDFS:hadoopfs-copyFromLocalhello......
  • shell 用户输入值REPLY变量值传递给 read 变量
    shell变量值传递给read变量readselChoices<<<"$REPLY"echo$selChoices"$REPLY"是用户输入的值,它通过here-string(<<<)传递给read命令参考:https://qa.1r1g.com/sf/ask/2128520901/......
  • 在不利用vue实现循环数据输入到表格
    如果您不使用Vue或其他前端框架,可以使用原生的JavaScript来实现将循环数据输入到表格中的操作。首先,您需要一个包含要展示数据的数组。然后,使用JavaScript循环遍历数据数组,动态创建表格的行和单元格,并将数据填充到相应的单元格中。下面是一个示例代码,展示了如何使用JavaScript将......
  • shell基础
    一.shell脚本在/etc/shells中可以找到当前系统支持的shell脚本种类  脚本用途将简单的命令组合完成复杂的工作,自动化执行命令,提高工作效率减少手工命令的重复输入,一定程度上避免人为错误将软件或应用的安装及配置实现标准化用于实现日常性的,重复性的运维工作,如:文......
  • Java的流程控制(选择结构语句 if ~ switch &循环结构语句dowhile ~ for)
    前言程序执行的控制流程分为三种,也称为三种结构,分别是:顺序结构、和循环结构。顺序结构指的是程序执行按照代码的编写顺序,依次从上往下开始执行,直到程序结束。程序的执行默认是顺序执行的一、选择结构语句1.if条件语句一个if语句包含一个布尔表达式和一条或多条语句if(布尔表达......
  • 添加循环项,滑动条到最下方
    filterScrollTo(){constparent=document.querySelector('#quoteitemcon');constchild=document.getElementsByClassName('quote-con');console.log('parent',parent,child);parent.scrollTo({to......
  • java中for ,while ,enhance for 有什么区别?
    这三种循环结构在Java中都有其各自的用途和特点。以下是它们的区别:for循环:这是一个经典的循环结构,适用于你事先知道循环次数的情况。它的构造由初始化语句、条件语句和迭代语句组成。for(inti=0;i<10;i++){System.out.println(i);}while循环:当你事先不知道循环次数,......
  • Jmeter 的 BeanShell
    通过BeanShell可以访问ctx、vars、props、prev、sampler、log;1.通过ctx可以访问jmeter运行时状态,比如线程数及线程状态;ctx:获取当前线程上下文数据(可获取所有信息);可以通过获取jmeterContent实例来获取运行时信息;ctx.getVariables(“变量名”):获取变量值(同vars.get())。ct......