shell for循环

linux 学习笔记四

不羁岁月 提交于 2019-11-29 21:29:23
linux 学习笔记四 shell 执行过程 bash 类型 Login Bash Interactive Bash shell 执行 • 父 shell Fork 一 sub-shell • Sub-shell继承父shell环境 • Sub-shell调用指定的解释器解释执行该脚本 • Sub-shell退出,相关环境被销毁 • 父 shell 取得 sub-shell 的退出状态 shell 解析 1 、 brace expansion (花括号扩展) 2 、 tilde expansion (波浪线扩展) 3 、 parameter, variable expansion (变量扩展) 4 、 arithmetic expansion (算术扩展) 5 、 command substitution (命令替换) 6 、 word splitting (词的拆分) 7 、 pathname expansion (路径名扩展) Bash 语法 变量 • 变量赋值: name=value • 变量引用: ${name} 合法的变量名: 字母、下划线、数字 注意: – = 号两边不允许空格 – $name 是 ${name} 的简写 常用变量 数值计算 / % ( 加 , 减 , 乘 , 除 , 取模 ) i=10; j=20; (( i++ )) (( cnt=i+j)) cnt

shell脚本面试题-转

喜欢而已 提交于 2019-11-29 15:01:41
防止链接丢失,故转到自己的博客来 原地址链接 https://www.cnblogs.com/xiaohuhu/p/10725841.html Q:1 Shell脚本是什么、它是必需的吗? 答:一个Shell脚本是一个文本文件,包含一个或多个命令。作为系统管理员,我们经常需要使用多个命令来完成一项任务,我们可以添加这些所有命令在一个文本文件(Shell脚本)来完成这些日常工作任务。 Q:2 什么是默认登录shell,如何改变指定用户的登录shell 答:在Linux操作系统,“/bin/bash”是默认登录shell,是在创建用户时分配的。使用chsh命令可以改变默认的shell。示例如下所示: Q:3 可以在shell脚本中使用哪些类型的变量? 答:在shell脚本,我们可以使用两种类型的变量: 系统定义变量 用户定义变量 系统变量是由系统系统自己创建的。这些变量通常由大写字母组成,可以通过“set”命令查看。 用户变量由系统用户来生成和定义,变量的值可以通过命令“echo $<变量名>”查看。 Q:5 shell脚本中“if”语法如何嵌套? 答:基础语法如下: if [ 条件 ]; then 命令 elif [ 条件 ]; then 命令 else 命令 fi Q:8 shell脚本中break命令的作用 ? 答:break命令一个简单的用途是退出执行中的循环

shell脚本面试题

纵然是瞬间 提交于 2019-11-29 15:01:08
Q:1 Shell脚本是什么、它是必需的吗? 答:一个Shell脚本是一个文本文件,包含一个或多个命令。作为系统管理员,我们经常需要使用多个命令来完成一项任务,我们可以添加这些所有命令在一个文本文件(Shell脚本)来完成这些日常工作任务。 Q:2 什么是默认登录shell,如何改变指定用户的登录shell 答:在Linux操作系统,“/bin/bash”是默认登录shell,是在创建用户时分配的。使用chsh命令可以改变默认的shell。示例如下所示: ? 1 2 # chsh <username> -s <new_default_shell> # chsh linuxtechi -s /bin/sh Q:3 可以在shell脚本中使用哪些类型的变量? 答:在shell脚本,我们可以使用两种类型的变量: 系统定义变量 用户定义变量 系统变量是由系统系统自己创建的。这些变量通常由大写字母组成,可以通过“ set ”命令查看。 用户变量由系统用户来生成和定义,变量的值可以通过命令“ echo $<变量名> ”查看。 Q:4 如何将标准输出和错误输出同时重定向到同一位置? 答:这里有两个方法来实现: 方法一: 2>&1 (# ls /usr/share/doc > out.txt 2>&1 ) 方法二: &> (# ls /usr/share/doc &> out.txt ) Q:5

Linux 脚本编写基础

蹲街弑〆低调 提交于 2019-11-29 12:23:51
1. Linux 脚本编写基础 1.1 语法基本介绍 1.1.1 开头 程序必须以下面的行开始(必须方在文件的第一行): #!/bin/sh   符号#!用来告诉系统它后面的参数是用来执行该文件的程序。在这个例子中我们使用/bin/sh来执行程序。   当编辑好脚本时,如果要执行该脚本,还必须使其可执行。   要使脚本可执行: 编译 chmod +x filename 这样才能用./filename 来运行 1.1.2 注释   在进行shell编程时,以#开头的句子表示注释,直到这一行的结束。我们真诚地建议您在程序中使用注释。 如果您使用了注释,那么即使相当长的时间内没有使用该脚本,您也能在很短的时间内明白该脚本的作用 及工作原理。 1.1.3 变量   在其他编程语言中您必须使用变量。在shell编程中,所有的变量都由字符串组成,并且您不需要对变量 进行声明。要赋值给一个变量,您可以这样写: #!/bin/sh #对变量赋值: a="hello world" # 现在打印变量a的内容: echo "A is:" echo $a 有时候变量名很容易与其他文字混淆,比如: num=2 echo "this is the $numnd" 这并不会打印出"this is the 2nd",而仅仅打印"this is the ",因为shell会去搜索变量numnd的值,

shell学习2shell变量

痴心易碎 提交于 2019-11-29 09:03:21
2.1定义变量 a.定义变量时,变量名不加美元符号($,PHP语言中变量需要),如: your_name="runoob.com" 注意,变量名和等号之间不能有空格, 这可能和你熟悉的所有编程语言都不一样。 b.变量名的命名须遵循如下规则: 命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。 中间不能有空格,可以使用下划线(_)。 不能使用标点符号。 不能使用bash里的关键字(可用help命令查看保留关键字)。 c.除了显式地直接赋值,还可以用语句给变量赋值,如: for file in `ls /etc` 或 for file in $(ls /etc) 以上语句将 /etc 下目录的文件名循环出来。 反引号:反引号中的内容当做命令运行,要用反引号'',或者用$()把命令括起来再赋值 2.2使用变量 a.使用一个定义过的变量,只要在变量名前面加美元符号即可,如: your_name="qinjx" echo $your_name echo ${your_name} 变量名外面的花括号是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界 ,比如下面这种情况: for skill in Ada Coffe Action Java; do echo "I am good at ${skill}Script" done 如果不给skill变量加花括号,写成echo

shell编程实战7

谁说我不能喝 提交于 2019-11-29 05:09:50
1. 计算文档中数字的个数 2. 对比两台机器文件的差异 #!/bin/bash dir=/data/web [ -f /tmp/md5.list ] && >/tmp/md5.list # /tmp目录是一定存在的,md5.list文件必须清空或删除 find $dir/ -type f > /tmp/file.list while read line do md5sum $line >> /tmp/md5.list # 循环追加 done </tmp/file.list scp /tmp/md5.list B:/tmp/ [ -f /tmp/check_md5.sh ] && rm -f /tmp/check_md5.sh # 要嵌入的脚本文件 cat > /tmp/check_md5.sh << EOF #!/bin/bash dir=/data/web n=\`wc -l /tmp/md5.list\` # 由于for循环中的文件的行中不能有空格,所有把循环条件转换为文件的行数 for i in \`seq 1 \$n\` # 取变量的值$n,也要脱义,否则就是$n的值 do file_name=\`sed -n "\$i"p /tmp/md5.list |awk '{print $2}'\` md5=\`sed -n "\$i"p /tmp/md5.list |awk '

linux Shell(待学)

无人久伴 提交于 2019-11-29 05:04:24
2. Shell 2.1 简介 shell脚本执行方式Shell 是一个用 C 语言编写的程序,通过 Shell 用户可以访问操作系统内核服务。它类似于 DOS 下的 command 和后来的 cmd.exe。Shell 既是一种命令语言,又是一种程序设计语言。 Shell script 是一种为 shell 编写的脚本程序。Shell 编程一般指 shell脚本编程,不是指开发 shell 自身。 Shell 编程跟 java、php 编程一样,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以了。 Linux 的 Shell 种类众多,一个系统可以存在多个 shell,可以通过 cat /etc/shells 命令查看系统中安装的 shell。 Bash 由于易用和免费,在日常工作中被广泛使用。同时,Bash 也是大多数Linux 系统默认的 Shell。 2.2快速入门 1 编写脚本 新建 /root/test/shell/01.sh 文件 #!/bin/bash​echo 'hello world' # !是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种 Shell。 echo 命令用于向窗口输出文本。 2 解释器 java 需要 虚拟机解释器, 同理 shell脚本也需要 解析器 [root@node04 shells]# cat

shell 强大的awk

匆匆过客 提交于 2019-11-29 04:52:55
from here 小用法,使用awk来对文件随机抽取n行 awk 'BEGIN{srand()} {print rand()"\t"$0}' input_file | sort -nk 1 | head -n line_num | awk -F "\t" '{print $2}' 简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。 awk有3个不同版本: awk、nawk和gawk,未作特别说明,一般指gawk,gawk 是 AWK 的 GNU 版本。 awk其名称得自于它的创始人 Alfred Aho 、Peter Weinberger 和 Brian Kernighan 姓氏的首个字母。实际上 AWK 的确拥有自己的语言: AWK 程序设计语言 , 三位创建者已将它正式定义为“样式扫描和处理语言”。它允许您创建简短的程序,这些程序读取输入文件、为数据排序、处理数据、对输入执行计算以及生成报表,还有无数其他的功能。 使用方法 awk '{pattern + action}' {filenames} 尽管操作可能会很复杂,但语法总是这样,其中 pattern 表示 AWK 在数据中查找的内容,而 action

shell脚本白话知识点(原创)

空扰寡人 提交于 2019-11-29 03:16:38
文章手写拼打,内容当然不是本人所创造,目的是用白话更好的记录并理解SHELL脚本,加以运用! !(感叹号)不能用双引号打印出来,只能用单引号来打印输出。但是在bash环境下,要输出感叹号必须使用单引号。这是因为默认情况下开启了使用感叹号引用内存中的历史命令的设置,可以使用set +H关闭该设置,这时可以使用感叹号输出。(done) 如果echo不加任何引号,很显然不能输出分号“;”,因为分号会被shell解析为命令连接符号。如果;不作为换行符需要加上“” 但只加单引号又不能扩展变量,使用双引号又不好输出感叹号,所以echo命令克服各种疑难杂症的方法是对特殊符号分开引用。 echo -e识别转义和特殊意义的符号,如换行符、n、制表符\t、转义符\等。 不加-n的默认情况下echo会在每行行尾加上换行符号,使用echo -n取消分行输出。(done) echo可以控制字体颜色和背景颜色输出。 常见的字体颜色:重置=0,黑色=30,红色=31,绿色=32,黄色=33,蓝色=34,紫色=35,天蓝色=36,白色=37。 常见的背景颜色:重置=0,黑色=40,红色=41,绿色=42,黄色=43,蓝色=44,紫色=45,天蓝色=46,白色=47。 字体控制选项:1表示高亮,4表示下划线,5表示闪烁等。 因为需要使用特殊符号,所以需要配合-e选项来识别特殊符号。(done)

Shell能做什么

孤街醉人 提交于 2019-11-29 01:52:28
shell概览 一、shell能做什么 1.自动化系统初始化(update,软件安装,时区设置,安全策略...) 2.自动化批量软件部署程序(LAMP/LNMP/Tomcat/Nginx) 3.管理应用程序(KVM,集群管理扩容,MySQL,DELLR720批量RAID) 4.日志分析处理程序(PV,UV,200,!200,top100,grep/awk) 5.自动化备份恢复程序(MySQL完全备份/增量+Crond) 6.自动化管理程序(批量远程修改密码,软件升级,配置更新) 7.自动化信息采集及监控程序(收集系统/应用状态信息,CPU,Mem,Disk,Net,TCP Status,Apache,MySQL) 8.配合Zabbix信息采集(收集系统/应用状态信息,CPU,Mem,Disk,Net,TCP Status,Apache,MySQL) 9.自动化扩容(增量云主机——>业务上线) zabbix监控CPU 80%+|-50% Python API AWS/EC2(增加/删除云主机)+Shell Script(业务上线) 10.俄罗斯方块,打印三角形,打印圣诞树,打印五角星,运动的小火车,坦克大战,排序算法实现 11.Shell理论上将可以做任何事(一切取决业务需求) 程序语言执行: C —— 编译 —— 二进制机器码(CPU可以直接执行,不用再处理,x86复杂指令集