shell for循环

Shell脚本

我的梦境 提交于 2020-01-17 19:50:40
1.1.1创建与编写 Shell脚本通常都以.sh为后缀。第一行内容表示使用bash语法,更加规范。#后面跟一些时间日期版本。 查看 另一种方式 使用该方法需要脚本本身具有执行权限,所以给脚本加一个x 使用sh时,可以加-x查看这个脚本的执行过程。 1.1.2 date命令 date +%Y: 表示以四位数字格式打印年份。 date +%y:表示以两位数字格式打印年份。 date +%m: 表示月份。 date +%d: 表示日期。 date +%H:表示小时。 date +%M: 表示分钟。 date +%S: 表示秒。 date +%w: 表示星期。结果显示o则表示周日。 1.2Shell脚本中的变量 1.2.1 数学运算 示例 数学计算要用[ ]括起来,并在前面加$ 结果为 1.2.2 和用户交互 read命令用于和用户交互,他把用户输入的字符串作为变量值。结果为 加上-x查看整个执行过程 1.2.3 shell脚本预设变量 在脚本后面跟的参数就是预设变量 $1代表第一个参数$2代表第二个,给shell脚本的预设变量是没有限制的 1.3shell脚本中的逻辑判断 1.3.1 不带else 示例 (())时shell中特有的格式,只用一个或者不用都会报错。 结果: 1.3.2 带有else 示例 结果 1.3.3 带有elif 示例 结果 判断数值大小可以用(())外还可以用[

Linux学习——shell编程

旧城冷巷雨未停 提交于 2020-01-17 06:54:20
LINUX-----shell编程(脚本shell) Shell的种类 1.sh 2.ksh 3.bash 4.C shell(包括csh and tcsh) 5.tcsh shell的概念 shell提供了你与操作系统之间的通讯方式,这种通讯方式可以以交互方式(从键盘输入,并且可以立即得到响应),或者以shell script(非交互)方式执行。shell script是放在文件中的一串shell和操作系统命令,他们可以被重复使用。 本质上,shell script是命令行命令简单的组合到一个文件里面 程序基础 程序必须以下面的行开始(必须放在一个文件的第一行): #!/bin/sh #!用来告诉系统他后面的参数是用来执行该文件的程序 要使脚本可以执行: chmod +x filename 然后,您可以通过输入: ./filename 来执行您的脚本文件 在进行shell编程时,以#开头的句子表示注释,直到这一行的结束。建议在程序中使用注释,那么即使相当长的时间没有使用该脚本,您也可以在很短的时间内明白该脚本的作用及工作原理。 变量 在其他编程语言中必须使用变量。在shell编程中,所有的变量都由字符串组成,并且不需要对变量进行声明。要赋值给一个变量,可以这样写: 变量名=值 取出变量值可以加一个美元符号(¥)(实际是shift+4)在变量前面 变量赋值时,“=”两边都不能有空格

shell学习-常用语句

随声附和 提交于 2020-01-14 16:14:03
为什么使用shell 可以快速、简单的完成编程,实现自己的想法。Shell非常适合编写小的工具,因为小工具更强调的是易于配置、维护、移植等,而不是执行效率。 当自己的想法确实有必要进行优化,有必要让它更容易修改以及修正设计目的时,可以将shell编写的工具重新用C、C++/python等语言重新实现。 常见的shell有bash/csh/sh等 管道和重定向 ls -al > lsoutput.txt #将ls命令输出的内容重定向到txt文件 在>前加数字 0 1 2 分别代表输入、标准输出、错误输出 参数2可以将错误输出到文件 而标准输出的内容将显示在屏幕上 >> #将输出添加到文件 丢弃不需要保存的输出的方法 Kill -l 1234 >/dev/null 2>&1 #将标准输出与错误输出都丢弃到系统垃圾箱 | 管道 用来连接进程 通过管道连接的进程可以同时运行,并自动协调数据流 1 Ps > psout.txt #输出ps内容到psout.txt 2 Sort psout.txt > psout.out #对psout.txt内容进行排序 输出到psout.out中 管道写法 1 Ps | sort | pssort.out #将ps内容排序后输出 自动搜索文件夹下 所有文件中包含的 某字符串 More $(grep -l POSIX *) #在当前文件夹下的文件中

初入Shell

风格不统一 提交于 2020-01-12 00:07:23
shell 第 1 章 Shell 概述 大数据 程序员 为什么要 学习 Shell 呢?   1 ) 需要看懂运维人员 编写的Shell程序。   2) 偶尔会编写一些简单 Shell 程序 来管理集群、 提高开发效率 。    第 2 章 Shell 解析器   ( 1 ) Linux 提供的 Shell 解析器有: [atguigu@hadoop101 ~]$ cat /etc/shells /bin/sh /bin/bash /sbin/nologin /bin/dash /bin/tcsh /bin/csh   ( 2 ) bash 和 sh 的关系 [atguigu@hadoop101 bin]$ ll | grep bash -rwxr-xr-x. 1 root root 941880 5月 11 2016 bash lrwxrwxrwx. 1 root root 4 5月 27 2017 sh -> bash   ( 3 ) Centos/Ubutun 默认的 解析 器 是bash [atguigu@hadoop102 bin]$ echo $SHELL /bin/bash 第 3 章 Shell 脚本 入门 1 . 脚本格式 脚本以 #!/bin/bash 开头 (指定解析 器 ) 2 . 第一个 Shell 脚本 :helloworld ( 1 )需求:创建一个

SHELL脚本编程生产案例

拈花ヽ惹草 提交于 2020-01-11 22:38:42
Shell脚本编程 基础 编写脚本 backup.sh,可实现每日将/etc/目录备份/backup/etcYYYY-mm-dd中 #!/bin/bash cp -av /etc/ /data/etc\ ` date +%F ` 编写脚本 hostping.sh,接受一个主机的IPv4地址做为参数,测试是否可连通。如果能ping通,则提示用户“该IP地址可访问”;如果不可ping通,则提示用户“该IP地址不可访问” #!/bin/bash ping -w3 -c3 $1 & > /dev/null && echo "该IP地址可访问" || echo "该IP地址不可访问" 编写脚本 checkdisk.sh,检查磁盘分区空间和inode使用率,如果超过80%,就发广播警告空间将满 #!/bin/bash CHECKDISK = ` ( df ; df -i ) | egrep "^/dev/sda" | tr -s ' ' % | cut -d '%' -f5 | sort -nr | head -1 ` [ $CHECKDISK -gt 80 ] & > /dev/null && echo "磁盘空间或节点编号空间已达到80%" | mail -s "空间已满" root 编写脚本 per.sh,判断当前用户对指定参数文件,是否不可读并且不可写 #!/bin/bash [ !

【转载】shell基础知识

a 夏天 提交于 2020-01-11 18:33:03
变量的定义: a=1 b=hello c="hello world !" d='hello "反启" !' e=`ls` (注意:这是反引号)   备注:=号左右不能有空格;如果内容有空格需要使用单引号或者双引号;双引号支持转译 $开头的变量会被自动替换 变量替换:   ${value:-word}:如果变量名存在且非null,返回变量值;否则,返回word字符串   用途:如果变量未定义,则返回默认值   ${value:=word}:如果变量名存在且非null,返回变量值;否则,设置这个变量值为word   用途:如果变量未定义,,则设置变量为默认值,并返回默认值   ${value:?"not defined"}:如果变量名存在且非null,返回变量值;否则显示“not defined”,并退出当前命令或脚本。   用途:用于捕捉由于变量未定义而导致的错误,并退出程序。   ${value:+word}:如果变量名存在且非null,返回word,否则返回null。   用途:测试变量是否存在。 变量的使用:   echo $a   echo ${a}   echo "$a"   备注:使用$var 或 ${var}来访问变量,后者更为严谨,$var_x和${var}_x是不同的;变量不需要定义也可以使用,引用未定义的变量,默认为空值。 预定义变量: echo $USER

Linux Bash Shell编程快速入门

空扰寡人 提交于 2020-01-05 12:04:50
BASH 的基本语法 最简单的例子 —— Hello World! 关于输入、输出和错误输出 BASH 中对变量的规定(与 C 语言的异同) BASH 中的基本流程控制语法 函数的使用 2.1 最简单的例子 —— Hello World! 几乎所有的讲解编程的书给读者的第一个例子都是 Hello World 程序,那么我们今天也就从这个例子出发,来逐步了解 BASH。 用 vi 编辑器编辑一个 hello 文件如下: #!/bin/bash # This is a very simple example echo Hello World 这样最简单的一个 BASH 程序就编写完了。这里有几个问题需要说明一下: 一,第一行的 #! 是什么意思 二,第一行的 /bin/bash 又是什么意思 三,第二行是注释吗 四,echo 语句 五,如何执行该程序 #! 是说明 hello 这个文件的类型的,有点类似于 Windows 系统下用不同文件后缀来表示不同文件类型的意思(但不相同)。Linux 系统根据 “#!” 及该字串后面的信息确定该文件的类型,关于这一问题同学们回去以后可以通过 “man magic”命令 及 /usr/share/magic 文件来了解这方面的更多内容。在 BASH 中 第一行的 “#!” 及后面的 “/bin/bash” 就表明该文件是一个 BASH 程序,需要由

shell awk

旧巷老猫 提交于 2019-12-30 19:03:02
awk 逐行扫描输入 ( 可以是文件或管道等 ),按给定的模式查找出匹配的行,然后对这些行执行 awk 命令指定的操作。 awk 将读入的记录分割成数个字段,并将第一个字段放入发量 $1 中,第二个放入发量 $2 中,以此类推; $0 表示整条记录 ; 字段分隔符可以通过选项 -F 指定 ,否则使用缺省的分隔符,通常为空格或Tab。 ARGC:命令行参数个数 ( 实际就是输入文件的数目加 1 )  ARGIND:当前被处理的文件在数组 ARGV 内的索引  ARGV:命令行参数数组  FILENAME:当前输入文件的文件名  FNR:已经被 awk 读叏过的记录(行)的总数目  FS:输入记录的字段分隔符 (缺省是空格和制表符 )  NF:当前行或记录的字段数  NR:对当前输入文件而言,已被 awk 读取过的记录 ( 行 ) 的数目  OFMT:数字的输出格式 ( 缺省是 %.6g )  OFS:输出记录的字段分隔符 (缺省是空格 )  ORS:输出记录间的分隔符 (缺省是 NEWLINE )  RS:输入记录间的分隔符 (缺省是 NEWLINE )  用亍存储 awk 工作时的各种参数, 这些发量的值会随着 awk 程序的运行而劢态的发化,常见的有: awk 用法:awk ' pattern {action} ' 变量名 含义 ARGC 命令行变元个数

Shell循环语句:for

馋奶兔 提交于 2019-12-26 16:39:23
[root@master1-192-168-117-18 ~]# vim users.txt [root@master1-192-168-117-18 ~]# vim Example.sh #!/bin/bash read -p "Enter The Users Password:" PASSWD for UNAME in cat users.txt do id $UNAME &> /dev/null if [ $? -eq 0 ] then echo "Already exits" else useradd $UNAME &> /dev/null echo "$PASSWD" | passwd --stdin $UNAME &> /dev/null if [ $? -eq 0 ] then echo "$UNAME,create success!" else echo "$UNAME,Create failure!" fi fi done [root@master1-192-168-117-18 ~]# bash Example.sh Enter The Users Password:1234 zhangsan,create success! lisi,create success! wangmazi,create success! hanmeimei,create

Shell 基本语法结构(4):循环结构

删除回忆录丶 提交于 2019-12-26 01:22:22
1. 循环语法基础结构 1.1. for 结构 1.1.1. 列表循环 列表 for 循环:用于将一组命令执行已知的次数 for variable in { list } do command1 command2 .. . done 或者 for variable in a b c do command1 command2 .. . done 1.1.2. 不带列表循环 for variable do command1 command2 .. . done 1.1.3. 类 C 风格的 for 循环 基本语法结构 for (( expr1 ; expr2 ; expr3 )) do command1 command2 .. . done 1.1.4. 学习示例 打印1至50 #!/bin/bash for i in { 0 .. 50 .. 2 } do echo ${i} done # 类 c 风格 for (( i = 1 ; i <= 50 ; i ++ )) do echo ${i} done 1.2. while 结构 条件为真进入循环,条件为假则退出循环 while 表达式 do command1 done 示例:用 while 结构循环打印1-5 i = 1 while [ [ ${i} -le 5 ] ] ; do echo ${i} let i++ done 1