shell for循环

Shell 流程控制

微笑、不失礼 提交于 2020-02-27 09:56:12
Shell 流程控制 和Java、PHP等语言不一样,sh的流程控制不可为空,如(以下为PHP流程控制写法): <?php if (isset($_GET["q"])) { search(q); } else { // 不做任何事情 } 在sh/bash里可不能这么写,如果else分支没有语句执行,就不要写这个else,就像这样 if else if if 语句语法格式: if condition then command1 command2 ... commandN fi 写成一行(适用于终端命令提示符): if [ $(ps -ef | grep -c "ssh") -gt 1 ]; then echo "true"; fi 末尾的fi就是if倒过来拼写,后面还会遇到类似的。 if else if else 语法格式: if condition then command1 command2 ... commandN else command fi if else-if else if else-if else 语法格式: if condition1 then command1 elif condition2 command2 else commandN fi for 循环 与其他编程语言类似,Shell支持for循环。 for循环一般格式为: for var in item1

Shell脚本中的并发

谁都会走 提交于 2020-02-26 14:53:19
主要记录一下Shell脚本中的命令的并发和串行执行以及如何控制进程的数量。 默认的情况下,Shell脚本中的命令是串行执行的,必须等到前一条命令执行完后才执行接下来的命令,但是如果我有一大批的的命令需要执行,而且互相又没有影响的情况下(有影响的话就比较复杂了),那么就要使用命令的并发执行了。 看下面的代码: #!/bin/bash for (( i = 0 ; i < ${count} ; i ++ )) do commands1 done commands2 对于上面的代码,因为每个commands1都挺耗时的,所以打算使用并发编程,这样就可以节省大量时间了。 修改后的代码如下: #!/bin/bash for (( i = 0 ; i < ${count} ; i ++ )) do { commands1 } & done commands2 这样的话commands1就可以并行执行了。 实质是将commands1作为后台进程在执行,这样主进程就不用等待前面的命令执行完毕之后才开始执行接下来的命令。 但是我的本来目的是让commands1的这个循环都执行结束后,再用command2去处理前面的结果。如果像上面这样写的话,在commands1都还没结束时就已经开始执行commands2了,得到了错误的结果。 再次修改代码如下: #!/bin/bash for (( i = 0 ;

Shell编程之awk工具

风格不统一 提交于 2020-02-26 01:22:19
一、awk介绍 1.awk概述 2.awk能干啥? 二、awk使用方式 1.==命令行模式使用== 1)语法结构 2)常用选项介绍 3)=='==命名部分说明=='== 2.脚本模式使用 1)脚本编写 2)脚本执行 三、 awk内部相关变量 1、==常用内置变量举例== 2、内置变量分隔符举例 四、 awk工作原理 五、awk使用进阶 1.格式化输出print和printf 2.awk变量定义 3.awk中BEGIN...END使用 1)举例说明1 2)举例说明2 4.awk和正则的综合运用 1)举例说明 5.课堂练习 6.awk的脚本编程 1)流程控制语句 2)循环语句 7.awk算数运算 六、awk统计案例 1、统计系统中各种类型的shell 2、统计网站访问状态 3、统计访问网站的每个IP的数量 4、统计网站日志中PV量 一、awk介绍 1. awk概述 awk是一种==编程语言==,主要用于在linux/unix下对==文本和数据==进行处理,是linux/unix下的一个工具。数据可以来自标准输入、一个或多个文件,或其它命令的输出。 awk的处理文本和数据的方式: ==逐行扫描==文件 ,默认从第一行到最后一行,寻找匹配的==特定模式==的行,并在这些行上进行你想要的操作。 awk分别代表其作者姓氏的第一个字母。因为它的作者是三个人,分别是Alfred Aho、Brian

Shell编程之循环语句

佐手、 提交于 2020-02-26 01:20:37
一、for循环语句 1.for循环语法结构 1)列表==循环 2)不带列表循环 3)类C风格的for循环 2.应用案例 1)脚本==计算==1-100奇数和 2)判断所输整数是否为质数 3)批量创建用户 4)批量创建用户 5)局域网内脚本检查主机网络通讯 6)判断闰年 二、while循环语句 1.while循环语法结构 2.应用案例 1)脚本计算1-50偶数和 2)脚本同步系统时间 三、until循环 1.until语法结构 2.应用案例 1)具体需求 2)思路 3)落地实现 一、for循环语句 1. for循环语法结构 1)列表==循环 列表for循环:用于将一组命令执行 ==已知的次数== 基本语法格式 for variable in {list} do command command … done 或者 for variable in a b c do command command done 举例说明 # for var in {1..10};do echo $var;done # for var in 1 2 3 4 5;do echo $var;done # for var in `seq 10`;do echo $var;done # for var in $(seq 10);do echo $var;done # for var in {0..10..2};do

Shell编程之嵌套循环

主宰稳场 提交于 2020-02-26 01:20:29
一、随机数 1.如何生成随机数? 2.实战案例 1)随机产生以139开头的电话号码 2)随机抽出5位幸运观众 3)批量创建用户(密码随机产生) 二、嵌套循环 1.应用案例 1)打印指定图案 2)落地实现1 3)落地实现2 三、阶段性补充总结 1.影响shell程序的内置命令 四、综合案例 1.实战案例1 1)具体需求 2)案例分析 3)落地实现 实战案例2 一、随机数 1. 如何生成随机数? 系统变量 : ==RANDOM== ,默认会产生0~32767的随机整数 前言: 要想调用变量,不管你是什么变量都要给钱,而且是美元:heavy_dollar_sign: 打印一个随机数 echo $RANDOM 查看系统上一次生成的随机数 # set|grep RANDOM RANDOM=28325 产生0~1之间的随机数 echo $[$RANDOM%2] 产生0~2之间的随机数 echo $[$RANDOM%3] 产生0~3之间的随机数 echo $[$RANDOM%4] 产生0~9内的随机数 echo $[$RANDOM%10] 产生0~100内的随机数 echo $[$RANDOM%101] 产生50-100之内的随机数 echo $[$RANDOM%51+50] 产生三位数的随机数 echo $[$RANDOM%900+100] 2. 实战案例 1)随机产生以139开头的电话号码

学习之shell脚本

做~自己de王妃 提交于 2020-02-25 11:40:44
第一行:#!/bin/bash --> #! 标记脚本的解释器 脚本: #!/bin/bash     echo "hello world" 赋予执行权限 chmod +x ./test.sh 执行脚本:./test.sh 定义变量 时不需要 $ 符号 :td='date "+%y%m%d"' 1.变量名和符号之间不能有空格 2.首个字符必须为字母 3.中间不能有空格,可以使用划线(_) 4.不能使用标点符号和 bash 中的关键字 除了显示赋值,还可用语句直接给变量赋值 for file in 'ls /etc' 将 /etc目录下的文件名循环出来 使用一个定义过的变量,只需在变量名前加上 $ 符号即可 echo $td 或 echo ${td} 对同一个变量名,可以进行二次赋值 eg: td='date "+%m%d"' 只读变量:readonly 定义变量为只读变量,变量值不可更改 url="http://www.baidu.com" readonly url url="http://www.tx.com" --> 报错 删除变量: unset variable_nae,不能删除只读变量 shell存在三种变量:①局部变量:脚本或命令中定义,仅在当前脚本有效           ②环境变量:所有程序有效           ③shell变量:由shell程序设置的变量

第12章 学习shell脚本

风格不统一 提交于 2020-02-24 12:52:40
12.1 什么是shell脚本 就字面上的意思,即针对shell所写的剧本,shell脚本是利用shell的功能所写的一个程序,这个程序使用纯文本文件,将一些shell的语法和命令(也可以是外部命令)写在里面,还能搭配正则表达式、管道命令和数据流重定向等功能,以达到我们需要的处理目的,执行一个“shell脚本”文件,就能一次执行多个命令,shell脚本还提供数组、循环、条件与逻辑判断等功能,用户可以直接用shell来编写程序,而不必使用类似C语言等传统程序语言来编写,shell脚本可以简单地被看成是批处理文件,也可以被说成是程序语言,且由于这个程序语言都是利用shell与相关工具命令,所以不需要编译即可执行 1学习shell脚本的作用 自动化管理:管理一台主机每天要进行的任务有查询日志文件、跟踪流量、监控用户使用主机状态、主机各项硬件设备状态、主机软件更新查询等,你可以每天手动处理这些事情,也可以写个简单的shell脚本,让它来帮你处理每天的任务 帮助管理系统:CentOS6.x以前的版本中系统服务启动的接口是在/etc/init.d/这个目录下,这个目录下所有文件都是脚本文件,另外,包括启动过程也要利用shell脚本来帮忙查询系统的相关设置参数,然后再代入各个服务中,从CentOS7开始,/etc/init.d/这个脚本启动的方式由systemd所替代

shell脚本编写统计内存使用

|▌冷眼眸甩不掉的悲伤 提交于 2020-02-24 04:31:26
vim aa.sh #!/bin/bash count = 0 # 这个循环会遍历出每个进程占用的内存大小 for i in ` ps aux | awk '{print $6 }' | grep -v 'RSS' ` do # 将遍历出来的数字进行累加 count = $ [ $count + $i ] done # 就得到所有进程占用内存大小的和了 echo " $count /kb" sh aa.sh ps aux | grep -v 'RSS TTY' | awk '{sum=sum+ $6 };END{print sum}' 来源: CSDN 作者: aaronszm 链接: https://blog.csdn.net/aaronszm/article/details/104464239

经典shell面试题

有些话、适合烂在心里 提交于 2020-02-19 08:46:24
70个经典的 Shell 脚本面试问题 转载自: http://www.imooc.com/article/1131 1) 如何向脚本传递参数 ? ./script argument 例子 : 显示文件名称脚本 ./show.sh file1.txt cat show.sh #!/bin/bash echo $1 ( LCTT 译注:谢谢某匿名访客的提醒,原题有误,修改之。) 2) 如何在脚本中使用参数 ? 第一个参数 : $1,第二个参数 : $2 例子 : 脚本会复制文件(arg1) 到目标地址(arg2) ./copy.sh file1.txt /tmp/ cat copy.sh #!/bin/bash cp $1 $2 3) 如何计算传递进来的参数 ? $# 4) 如何在脚本中获取脚本名称 ? $0 5) 如何检查之前的命令是否运行成功 ? $? 6) 如何获取文件的最后一行 ? tail-1 7) 如何获取文件的第一行 ? head-1 8) 如何获取一个文件每一行的第三个元素 ? awk'{print $3}' 9) 假如文件中每行第一个元素是 FIND,如何获取第二个元素 awk'{ if ($1 == "FIND") print $2}' 10) 如何调试 bash 脚本 将 -xv 参数加到 #!/bin/bash 后 例子: #!/bin/bash –xv 11

shell总结

て烟熏妆下的殇ゞ 提交于 2020-02-16 21:21:41
     shell总结    一.学习心得            在学习本阶段shell这一课程时,我对shell有了一个大概的了解。         shell是一门解释性语言,shell语言与高级语言处理的对象不同;它与系统         有着密切的关系,易编写、调试、灵活性较强,但速度低。           既然是心得,那我在这里想说一些心里话。这是我来景航的第n个月         在这n个月中一路磕磕绊绊还是走了过来,不过让我最伤的是我竟然仅仅         在Java web第二阶段就摔了两次在分班考试前我揪心的很,俗话说一个         人不能在同一个地方摔倒三次这也是我心中所担心的。哈哈废话不多说我         还记得我在之前也打听过大数据阶段超级难学,当我真正开始接触Linux的         时候我感觉没什么,但是自从开始学习shell的时候发现并不是那么容易。         我呀不爱说话学习方面一般不敢和别人主动去沟通,哪怕是不会也不愿意         去问老师同学有时候想问却不敢因为我怕别人笑话我。说实话我感觉整体         学习效果并不是太好!能力有待提升。    二.介绍shell           在计算机科学中,shell俗称壳(用来区别于核),是指"为使用者提         供操作界面"的软件(命令解析器)