shell for循环

shell基础、变量、相关脚本

倖福魔咒の 提交于 2019-12-16 14:19:09
目录 一、shell基础 书写规范 引号 配置文件 read交互 脚本调式 小节总结 二、变量 变量类型 位置变量 状态变量 替换和删除 变量补充 变量运算 小节总结 三、相关脚本面试题 统计history的top10 备份 内存用量报警 取各种值 无聊的题目 反复更名 我叫张贺,贪财好色。一名合格的LINUX运维工程师,专注于LINUX的学习和研究,曾负责某中型企业的网站运维工作,爱好佛学和跑步。 个人博客: 传送阵 笔者微信: zhanghe15069028807 ,非诚勿扰。 一、shell基础 书写规范 脚本要放在同一个目录里面: /server/scripts 开头加解释器 脚本的注释尽量全面:作者、用途、创建时候,联系方式 尽量全部使用英文,逼格整的高高的。 成对的符号,成对的格式一次性写完。 引号 双引号:会翻译变量 单引号:所见即所得 反引号:赋值命令的结果,而不是赋值命令,可用 $() 代替。 //这脚本执行为空 [root@nginx tmp]# vim test.sh #!/bin/bash start=`systemctl start nginx` #这里用的是反引号,这条命令执行的结果就是空的,start也是空的。 $start //这样才正常 [root@nginx tmp]# vim test.sh #!/bin/bash start=

脚本怎么写???

旧时模样 提交于 2019-12-16 13:43:16
在MICAS的这段时间,我深刻体会到了Linux系统与写脚本做仿真、做综合、做分析的重要性,对于一个硬件开发者而言,学会Linux系统的操作也是以编写脚本、运行脚本为目的的。这篇随笔我会记录一些最基本的Linux命令,以及四种脚本的使用方法以及一些实例。 想系统学习可以上这个网: https://www.runoob.com/linux/linux-tutorial.html ,但我建议先了解然后现学现用 什么是Shell Shell是一个应用程序,连接了用户和linux内核,shell在开机时就会启动等待接收命令并作出响应,相当于一个解释器,解释用户的指令,直观来看就是命令窗口。个人理解是,windows也有类似shell的应用程序,只不过windows中的shell做成了gui的形式,只需要用鼠标点一点就输入一个shell指令打开网页或是打开应用程序。 Bash Shell:打开linux的命令窗口就相当于进入了bash shell,也是linux中缺省的shell,我们键入的命令都是由bash shell解释器解释给内核并完成操作的。 cd <folder name>:进入目录;ls:展示当前窗口的文件;rm <file name>:删除文件;rm -rf <folder name>:删除文件夹;mkdir<folder name>:创建文件夹。 vim/kate <file

Shell脚本编程

自古美人都是妖i 提交于 2019-12-15 22:48:37
目录 1 基本介绍 1.1 什么是Shell 1.2 什么是Shell Script 1.3 Shell能做什么 2 运行环境 2.1 Shell 环境 2.2 bash环境文件 3 运行基础 3.1 Shell脚本格式 3.2 脚本的执行 4 编程语法 4.1 变量 4.2 字符串 4.3 数组 4.4 注释 4.5 基本运算符 1 基本介绍 1.1 什么是Shell 是一个用C语言编写的程序,它是用户使用Linux的桥梁 是一种命令语言,又是一种程序设计语言 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务 1.2 什么是Shell Script 是一种为Shell编写的脚本程序 1.3 Shell能做什么 将多个命令写在一起,让用户很轻松的就能执行一个文件的Shell脚本,就能够一次执行多个命令。 2 运行环境 2.1 Shell 环境 Bourne Again Shell (/bin/bash) Bourne Shell (/usr/bin/sh或/bin/sh) 只要有一个能编写代码的文本编辑器vi和一个能解释执行的脚本解释器就可以了 2.2 bash环境文件 .bash_profile 设置环境变量 账户一建立,该文件就存在 .bashrc 存放针对bash的命令 在 .bash_profile 之后执行 .bash_logout

Shell编程—结构化命令(2)

北慕城南 提交于 2019-12-15 20:28:02
1 for 命令 for命令的基本格式: for var in list do commands done 在list参数中,你需要提供迭代中要用到的一系列值。 1.1 读取列表中的值 例子: $ vim test1 #!/bin/bash # testing the for variable after the looping for test in Alabama Alaska Arizona Arkansas California Colorado do echo "The next state is $test" done echo "The last state we visited was $test" test=Connecticut echo "Wait, now we're visiting $test" 执行结果: $ ./test1 The next state is Alabama The next state is Alaska The next state is Arizona The next state is Arkansas The next state is California The next state is Colorado The last state we visited was Colorado Wait, now we're

用shell和python语言实现1到100相加的和

我的梦境 提交于 2019-12-14 09:08:21
大家是不是以为。这篇文章是《如何将Shell脚本应用到实际中》系列的啊。猜错了。出乎意料之外。哈哈。因为我的工作经验有限。我就不嘚瑟了。写点基本的吧。一方面加强自己的基础,二方面嘚瑟一下自己刚学会的Python基础语言以免忘记。(虽然是菜鸟)。 这个,是很简单的。题干的中心意思就是1+2+3+4+5+6+7+.....+100=?,我们要实现的就是这个“?”的值。 首先是用Python的while循环实现的: Python中的for循环也可以实现,看下图: 这个for循环呢。有个遍历是非常厉害的。那么用for来实现1+2+3+...+100的和是非常简单的了。 首先定义一个变量i,记录每次遍历的值。 定义一个变量sum1记录两数相加的和。 然后,最重要的来了,在这划重点哦,敲黑板。别走神哦。 for i in range(101): 这句的重要在 range ,为什么是 range ( 101 )? 答:range是范围函数,默认从0开始,故range(0,101)可以写成range(101)。 有人有疑问了。不是到 100 吗。怎么是 101 ? 答:range函数的规则是,左闭右开,等于数学上的左闭右开区间数。所以,是range(101)。 Are you ok ? 注意哦! for和while循环的最后,别忘了还有冒号 : ,英文字符下的哦! 最后呢,我用shell脚本写一下

70个shell脚本技巧

别来无恙 提交于 2019-12-11 12:04:23
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) 举例如何写一个函数 ? function example { echo "Hello world!" } 12)

鸟哥的Linux私房菜:3、学习shell与shell script

只愿长相守 提交于 2019-12-11 02:43:49
第 9 章、vim 程序编辑器 Linux 底下的配置文件多为文本文件,故使用 vim 即可进行设定编辑。 vim 可视为程序编辑器,可用以编辑 shell script, 配置文件等,避免打错字。 vi 为所有 unix like 的操作系统都会存在的编辑器,且执行速度快速。 vi 有三种模式,一般指令模式可变换到编辑与指令列模式,但编辑模式与指令列模式不能互换。 常用的按键有 i, [Esc],:wq 等。 vi 的画面大略可分为两部份,(1)上半部的本文与(2)最后一行的状态+指令列模式。 数字是有意义的,用来说明重复进行几次动作的意思,如 5yy 为复制 5 列之意。 光标的移动中,大写的G经常使用,尤其是 1G, G 移动到文章的头/尾功能! vi 的取代功能也很棒! :n1,n2s/old/new/g 要特别注意学习起来。 小数点「.」为重复进行前一次动作,也是经常使用的按键功能! 进入编辑模式几乎只要记住: i,o,R 三个按钮即可!尤其是新增一列的 o 与取代的 R。 vim 会主动的建立 swap 暂存档,所以不要随意断线! 如果在文章内有对齐的区块,可以使用 [ctr]-v 进行复制/贴上/删除的行为。 使用:sp 功能可以分区窗口。 若使用vim来撰写网页,若需要CSS元素数据,可透过 [crt]+x, [crt]+o 这两个连续组合按键来取得关 键词。

shell之for循环-while循环-break-continue-exit

廉价感情. 提交于 2019-12-10 16:40:59
for循环: 语法: for 变量名 in 条件 do command done #for循坏的条件集合,以空格作为分隔符,分割每一个条件。 例子: #!/bin/bash #求和1之100 sum=0 for in in `seq 1 100` do sum=$[$sum+$i] done echo $sum #!/bin/bash #查找/etc/目录下的目录,并长格式显示 cd /etc for i in `ls /etc/` do [ -d $i ] && ls -d $i done while循环: 语法: while 循环条件 do command done #当循环条件为 1或true或 “:”,表示死循环。 例子: #!/bin/bash #每30S监控系统负载,当大于10,发送邮件,假设邮件脚本在/usr/local/sbin/mail.py while true do load=`w|head -1|awk -F 'load average: ' '{print $2}'|cut -d "." -f 1` [ $load -gt 10 ] && /usr/local/sbin/mail.py "load high" "$load" sleep 30 done #!/bin/bash #让用户输入数字,检测若没输入字符,提示用户输入;若用户输入非数字

shell中的break跳出循环、continue结束本次循环、exit退出脚本

孤街醉人 提交于 2019-12-10 16:24:23
break跳出循环 实例: #! /bin/bash for i in `seq 1 5` do echo $i if [ $i == 3 ] then break fi echo $i done echo aaaaaaaaa 输出执行结果: [root@test01 jiaoben]# sh -x break1.sh ++ seq 1 5 + for i in '`seq 1 5`' + echo 1 1 + '[' 1 == 3 ']' + echo 1 1 + for i in '`seq 1 5`' + echo 2 2 + '[' 2 == 3 ']' + echo 2 2 + for i in '`seq 1 5`' + echo 3 3 + '[' 3 == 3 ']' + break + echo aaaaaaa aaaaaaa 从输出结果可以看到,当判断条件成立后,break,循环到此结束,不会再给它赋值,跳出循环,但是没有退出脚本,break后面的脚本内容依然会执行。 continue结束本次循环 忽略continue之下的代码,直接进行下一次循环 #!/bin/bash for i in `seq 1 5` do echo $i if [ $i == 3 ] then continue fi echo $i:不等于3 done echo

Shell--流程控制

醉酒当歌 提交于 2019-12-10 14:22:57
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 then command2 else commandN fi 以下实例判断两个变量是否相等: a = 10 b = 20 if [ $a