shell脚本

SHELL脚本简单说明

我怕爱的太早我们不能终老 提交于 2020-02-21 22:32:38
1.执行脚本两种方式 bash解释器命令直接运行Shell脚本文件(不需添加执行权限) 输入完整路径的方式执行(需要添加可执行权限) 2.接收用户的参数 $0 : 对应的是当前Shell脚本程序的名称 $# : 共输入个多少的参数 $* : 输入的参数有哪些 $? : 对应的显示上一次命令的执行返回的值 $1,$2,$3,$4 : 分别对应的低N个位置的参数 3.判断用户的参数 条件测试语法可以判断表达式是否成立, 若条件成立则返回数字0,否则便返回其他的随机数值。(表达式两边均应有一个空格) 格式: [ 条件表达式 ] 根据测试对象划分4种: 文件测试语句 逻辑测试语句 整数值比较语句 字符串比较语句 3.1 文件测试所用的参数 运算符 作用 -d 测试文件是否为目录类型 -e 测试文件是否存在 -f 判断是否为一般文件 1 -r 测试当前用户是否有权限读取 -w 测试当前用户是否有权限写入 -x 测试当前用户是否有权限执行 3.2 逻辑测试所用的参数 运算符 作用 && “与”,表示当前面的命令执行成功后才会执行它后面的命令 | | “或” ,表示当前面的命令执行失败后才会执行它后面的命令 ! “非” ,表示把条件测试中的判断结果取相反值。 3.3 可用的整数比较运算符 运算符 作用 -eq 是否等于 -nq 是否不等于 -gt 是否小于 -lt 是否大于 -le

shell第四天正则

雨燕双飞 提交于 2020-02-21 04:13:08
正则 正则分为 基础正则 , 扩展正则 正则 表达式 解释 示范 . 匹配任意单个字符(必须存在) "ro.t"可以是root,roat。"r…t"可以是root,raet ^ 表示以什么开头 “^#” 匹配以#开头的行 $ 表示以什么结尾 “root$” 表示匹配以root结尾的行 * 匹配前一个字符的一个或多个 可以为0 “a*b” 可以是aab,aaab,b,aaaab .* 表示匹配任意长度的字符 “.*t” 可以是root,boot,beat,以t结尾的 [] 表示范围的一个字符 [0-9]匹配数字,[a-z]匹配小写,[abc]匹配abc三个字符的任意一个 [^] 表示不再范围的一个字符,与[]相反 [^0-9]不匹配数字 ^[^] 匹配不在[]范围里的字符为开头的字符 ^[^A-Z] 表示匹配不以大写字母开头的字符 {n} 匹配前面字符至少n个字符 a{2}表示aaa aaaa aaaaa {n,m} 匹配前面字符至少n个字符,最多m个字符 a{2,4}为aaa,aaaa,aaaaa () 分组 < 锁定单词开头 <r 表示单词开头必须是r ,root,read > 锁定单词结尾 t>表示单词结尾必须是t ,root,about 函数 格式 函数名 () { commands } 例:写一个名叫hello_world的函数,要求输出hello world [ root

shell脚本-case语句 和 read参数

纵饮孤独 提交于 2020-02-20 13:52:08
case语法 case $变量名 in     "值 1"   如果变量值等于值1,则执行程序1     ;;     "值 2"   如果变量值等于2,则执行程序2     ;;   .......省略其他分支     *)   如果变量都不等于以上值,则执行此程序 esac    1 #!/bin/bash 2 read -p "小明现在要买机票" i 3 case $i in 4 "guangzhou") 5 echo "飞机票卖完了" 6 ;; 7 "shanghai") 8 echo "飞机票还剩一张" 9 ;; 10 "beijing") 11 echo "五十块一张" 12 ;; 13 *) 14 echo "拜拜" 15 esac read参数说明: -a 后跟一个变量,该变量会被认为是个数组,然后给其赋值,默认是以空格为分割符。 -d 后面跟一个标志符,其实只有其后的第一个字符有用,作为结束的标志。 -p 后面跟提示信息,即在输入前打印提示信息。 -e 在输入的时候可以使用命令补全功能。 -n 后跟一个数字,定义输入文本的长度,很实用。 -r 屏蔽\,如果没有该选项,则\作为一个转义字符,有的话 \就是个正常的字符了。 -s 安静模式,在输入字符时不再屏幕上显示,例如login时输入密码。 -t 后面跟秒数,定义输入字符的等待时间。 -u 后面跟fd

0429-如何在Redhat7.4安装HDP3.0.1

别说谁变了你拦得住时间么 提交于 2020-02-19 00:27:44
温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。 Fayson的github: https://github.com/fayson/cdhproject 提示:代码块部分可以左右滑动查看噢 1.文档编写目的 7月13日,Hortonworks在其官网宣布发布HDP3.0,相关介绍可以参考Fayson昨天的文章《Hortonworks正式发布HDP3.0》,最近又更新到了HDP3.0.1。本文档Fayson主要描述如何在Redhat7.4安装HDP3.0.1。HDP与CDH的安装步骤一致,主要包括以下四部分: 1.安全前置准备,包括安装操作系统、关闭防火墙、同步服务器时钟等; 2.外部数据库如MySQL安装 3.安装Ambari; 4.安装HDP集群; 本次Fayson的测试环境为 1.Ambari2.7.1 2.HDP3.0.1 3.Redhat7.4 4.JDK1.8.0_141 5.MariaDB-5.5.56 6.root用户安装 2.前置准备 2.1.hostname及hosts配置 集群中各个节点之间能互相通信使用静态IP地址。IP地址和主机名通过/etc/hosts配置,主机名通过/etc/hostname进行配置。 以Ambari节点(172.31.13.10)为例: hostname配置 /etc/hostname文件如下:

Linux shell 数组

守給你的承諾、 提交于 2020-02-17 11:22:16
引言   在Linux平台上工作,我们经常需要使用shell来编写一些有用、有意义的脚本程序。有时,会经常使用shell数组。那么,shell中的数组是怎么表现的呢,又是怎么定义的呢?接下来逐一的进行讲解,shell中的数组。 数组的定义   何为数组?学过计算机编程语言的同学都知道,数组的特性就是一组数据类型相同的集合(不包括有一些编程语言提出来的关联数组的概念)。那么shell中数组是怎么定义的呢,我们来看两种数据类型:一是数值类型,二是字符串类型;虽然shell本身是弱类型的,但也可以这么区分。    #数值类型的数组:一对括号表示数组,数组中元素之间使用“空格”来隔开。 #举个列子: arr_number=(1 2 3 4 5); #字符串类型数组:同样,使用一对括号表示数组,其中数组中的元素使用双引号或者单引号包含,同样使用“空格”来隔开。 arr_string=("abc" "edf" "sss"); 或者 arr_string=('abc' 'edf' 'sss'); 数组的操作    # 我们使用数值类型数组arr_number=(1 2 3 4 5)做为源数组进行相关的讲解:获取数组长度,读取某个下标的值,对某个下标赋值,删除、分配和替换以及遍历。提一个知识点,我们在shell里面想获取某个变量的值,使用$符开头,如:$a或者${a}即可。 # 获取数组长度

shell中的函数

梦想的初衷 提交于 2020-02-16 19:11:42
函数:功能, function 作用:代码重用 库:so function: 功能 结构化编程,不能独立运行,需要调用时执行,可以被多次调用 定义一个函数: function FUNCNAME { command } or FUNCNAME ( ) { command } 举例: # ! / bin / bash cat << EOF d | D ) show disk usages m | M ) show memory usages s | S ) show swap usages q | Q ) quit . EOF read - p "Your choice:" CHOICE until [ $ CHOICE == "q" - o $ CHOICE == "Q" ] ; do case $ CHOICE in d | D ) df - h ; ; m | M ) free - m | grep "^Mem" ; ; s | S ) free - m | grep "^Swap" ; ; * ) cat << EOF d | D ) show disk usages m | M ) show memory usages s | S ) show swap usages q | Q ) quit EOF read - p "Your choice:" CHOICE esac

Linux学习-实验楼(1)

耗尽温柔 提交于 2020-02-16 13:25:35
1.Shell:命令解释器 2.Linux技能树 3.X11:X窗口系统,其本身只是工具包及架构协议,Xorg是x架构规范的一个实现体,是实现了x协议规范的一个提供图形界面的服务器 4.终端本质上是对应着Linux上的/dev/tty设备,Linux的多用户登陆就是通过不同的/dec/tty设备完成的 5. 查看所属用户组: groups命令 实验4--Linux目录结构及文件基本操作 1.FHS标准:文件系统层次结构标准,它定义了系统中每个区域的用途,所需要的最小构成的文件和目录同事还给出了例外处理与矛盾处理。 2.进入当前登录用户的home路径   cd ~ 3.使用touch命令创建空白文件,其主要作用是来更改已有文件的时间戳的 4.标准输入输出:执行一个shell命令行时通常会自动打开三个标准文件,即标准输入文件(stdin),默认对应终端的键盘,标准输出文件(stdout)和标准错误输出文件(stderr),后面两个文件都对应被重定向到终端的屏幕,以便我们能直接看到输出内容。进程姜葱标准输入文件中得到输入数据,将正常输出数据输出到标准输出文件,而将错误信息送到标准错误文件中 实验5-环境变量与文件查找 1.创建:可以用declare创建,也可以使用时直接创建 输出:echo $tmp,变量名只能是英文字母,数字或者下划线,且不能以数字作为开头。 2.变量类型:1

Linux操作命令(四)

不打扰是莪最后的温柔 提交于 2020-02-16 13:24:14
本次实验将介绍 Linux 命令中 which、whereis、locate 命令的用法。 which whereis locate 1.which which命令的作用是,在PATH变量指定的路径中搜索可执行文件的所在唔知。它一般用来确认系统中是否安装了指定的软件。 【命令格式】:which 可执行文件名称 【常用参数】: 【常用范例】: 1.确认是否安装了gcc which gcc 2.查看cd命令的位置路径 which cd 从上面的显示信息可以看到在实验楼的系统中 cd 是一个 shell 函数。 再来在我本地 linux 系统上执行 which cd 命令,显示的结果如下: 显示在 PATH 变量指定的路径下没有 cd 命令。为什么显示没有呢?这是因为 cd 是 shell 内建命令,而 which 默认是找 PATH 内所指定的目录,内建命令不在其指定的目录中,所以当然一定找不到。 那么就有个问题,为什么实验楼环境中 cd 是一个 shell 函数,而其他 linux 环境中 cd 是内建命令呢?这跟所使用的 bash 有关。 echo $SHELL 命令查看当前使用的 shell。    补充知识 到底什么是命令? 命令可以是下面四种形式之一: 是一个可执行程序,就像我们所看到的位于目录/usr/bin 中的文件一样。 属于这一类的程序,可以编译成二进制文件,诸如用

Shell的条件测试

♀尐吖头ヾ 提交于 2020-02-16 09:56:45
一、Shell 1、简介 这个单词的意思是“外壳的意思”,shell又被称为命令解释器。 它可以识别用户输入的各种命令,并传递给系统。和我们在终端中输入的命令类似,但功能强大的多。 shell可以是用户交互的界面,也可以说是控制系统的脚本语言。 2、Shell的分类 集中常见的Shell Bourne Shell:标识为sh,在许多Unix系统中,是root用户的默认的Shell。 Bourne-Again Shell :标识为bash,大多数Linux发行版的默认的Shell。 Korn Shell:标识为ksh,向上兼容Bourne Shell,并且包含了 C shell 的很多特性。 C Shell:标识为csh,语法上类似C语言。。 这几种shell程序,多多少少有一些区别。但是最好用的还是Bourne-Again Shell。 3、编写Shell脚本 使用vim编辑器创建一个以.sh结尾的文件。 [root@test opt] # vim HelloWorld.sh [root@test opt] # cat HelloWorld.sh #!/bin/bash #声明解释器 #The first Shell script.Start with Hello World! #注释文本 echo "HelloWorld!" #执行指令 4、运行脚本的方式 (1

shell中的函数

眉间皱痕 提交于 2020-02-16 01:21:42
shell中的函数 1. shell函数格式 2. 函数的调用 3. 函数的参数 1. shell函数格式 shell函数的本质是一段可以重复使用的脚本代码,这段代码被提前编写好,放在指定位置,使用时直接调用即可。 shell中的函数和C++、JAVA、Python、C#等其他编程语言中的函数类似,只是在语法中有所差别。 shell函数定义的语法格式: function name ( ) { statements [ return value ] } 对各个部分的说明: function是shell中的关键字,专门用来定义函数; name是函数名; statements是函数要执行的代码 ,也就是一组语句; return value表示函数的返回值 ,其中return式shell关键字,此处用方括号括起来表示这部分可以写也可以不写; 由{ }包围的部分称为函数体 ,调用一个函数,实际上就是执行函数体中的代码 函数定义的简化写法: 函数定义时可以不写function关键字: name ( ) { statements [ return value ] } 如果写了function关键词,可以省略函数名后面的括号: function name { statements [ return value ] } 推荐第二种写法,可以在排查代码错误时更方便。 2. 函数的调用