shell脚本

Shell函数

允我心安 提交于 2019-12-04 21:12:34
函数的作用 命令合集,完成特定功能的代码块 函数必须先定义才可以使用,如果定义不调用则不被执行 使代码模块化,避免重复代码,加强可读性,便于复用 函数基本用法 函数传参 toc 函数基本用法 定义函数三种写法 ## 方法一 函数名() { 函数要实现的功能代码 } ## 方法二 function 函数名 { 函数要实现的功能代码 ## 方法三 function 函数名() { 函数要实现的功能代码 } 基本语法 [root@Shell ~]# vim test.sh #!/bin/bash ## 定义函数 function mantou () { echo "吃馒头!" } function miantiao () { echo "吃面条!" } ## 调用函数(不调用不会执行) mantou [root@Shell ~]# source test.sh 吃馒头 定义错误数值 [root@Shell ~]# vim return.sh #!/bin/bash funreturn() { read -p "enter num: " num return $[2*$num] } funreturn [root@Shell ~]# source return.sh 2 ; echo $? 4 函数传参 位置传参 #!/bin/bash ## 位置变量不是3个就退出 if [ $# -ne

Shell脚本判断语句

左心房为你撑大大i 提交于 2019-12-04 21:11:37
if判断语句 case判断语 toc if判断语句 单分支结构 if [ 如果你有房 ];then 我就嫁给你 fi 双分支结构 if [ 如果你有房 ];then 我就嫁给你 else 再见 fi 多分支结构 if [ 如果你有房 ];then 我就嫁给你 elif [ 你有车 ];then 我就嫁给你 elif [ 你有钱 ];then 我就嫁给你 else 再见 fi 安装 Nginx 的脚本 #!/usr/bin/bash ## 判断网络是否畅通 ping -c1 www.baidu.com &>/dev/null if [ $? -ne 0 ];then echo "请检查你的网络......" exit 1 fi ## yum 仓库 yum_repo=$(yum repolist|grep nginx|wc -l) if [ $yum_repo -eq 0 ];then cat >/etc/yum.repos.d/nginx.repo <<-EOF [nginx] name=nginx repo baseurl=http://nginx.org/packages/centos/7/x86_64/ gpgcheck=0 enabled=1 EOF yum makecache elif [ $yum_repo -eq 1 ];then yum install nginx

Shell脚本基础知识

筅森魡賤 提交于 2019-12-04 21:10:27
Shell 脚本是系统命令的堆积,用于简化操作步骤,提高效率,减少人为干预,减少系统故障。在学习 Shell 之前必须会熟练的手动运用系统命令,不会手动搭建或者执行某些程序,那么一定学不会 Shell Shell常用字符 Shell脚本变量 变量常见类型 变量赋值方式 变量数值运算 变量删除替换 toc 脚本的基本格式和执行方式 ## 基本格式 [root@Shell ~]# vim test.sh #!/bin/bash echo "Hello world" ## 运行脚本 [root@Shell ~]# chmod +x test.sh [root@Shell ~]# ./test.sh Hello world Shell常用字符 命令排序 ; 没有逻辑关系,无论分号前面的命令执行是否成功都执行后者命令 && 前面执行成功, 则执行后者 || 前面执行不成功, 则执行后者 shell 通配符 匹配任意多个字符 ? 匹配任意一个字符 [] 匹配括号中任意一个字符和一定范围的字符,比如a-z,0-9,A-Z,a-Z () 会在子 shell 中执行 {} 按顺序逐个匹配,比如 touch file{1..9} \ 转义符 echo输出颜色、printf 格式化输出文本 echo -e "\033[30m 黑色字 \033[0m" echo -e "\033[31m 红色字 \033

Shell脚本条件测试

五迷三道 提交于 2019-12-04 21:09:57
Shell 条件测试 文件测试 数值比较 逻辑判断 字符串比较 正则对比 toc Shell 条件测试 格式1: test 条件表达式 格式2: [ 条件表达式 ] 格式3: [[ 条件表达式 ]] 文件测试 [ -e dir|file ]测试文件或目录是非存在 [ -d dir ] 测试是否存在,而且是目录 [ -f file ] 测试是否存在,而且是文件 [ -r file ] 测试文件是否有读权限 [ -x file ] 测试文件是否有执行权限 [ -w file ] 测试文件是否有写权限 [ -L file ] 测试文件是否是链接文件 [ -b file ] 测试文件是否是块设备 [ -c file ] 测试文件是否是字符设备 [ -s file ] 测试文件是否存在且非空 [ -S file ] 测试文件是否是socket [ file1 -nt file2 ] 第一个文件比第二个文件新 [ file1 -ot file2 ] 第一个文件比第二个文件旧 [ file1 -ef file2 ] 第一个文件与第二个文件是同一个设备inode 命令行使用方式 ## 测试 /soft 目录是否存在,不存在就创建 /soft 目录 [root@Shell ~]# [ ! -d /soft ] && mkdir /soft [root@Shell ~]# [ -d /soft ] |

linux下的EDA——DC使用

浪子不回头ぞ 提交于 2019-12-04 20:49:09
Design Compiler的作用是将RTL级代码转化为门级网表,为后续的时序分析和后仿做准备,其过程主要包括translation、optimization和mapping。DC的实现有两种方式,一种是命令行或脚本的方式,另外一种是图形界面方式。 DC综合需要库的支持,一般我们使用的库为.db的二进制文件。 库分为三个等级:target library、link library和symbol library。 target library 是指RTL级的HDL描述到门级时所需的标准单元综合库,它是由芯片制造商(Foundry)提供的,包含了物理信息的单元模型。 link library 可以是同target_library一样的单元库,也可以是已经底层已经被综合到门级的模块,在由下而上的综合过程中,上一层的设计调用底层已综合模块时,将从link_library中寻找并链接起来。 symbol library是显示电路时,用于标识器件、单元的库。芯片供应商提供的库通常有max,type,min三种类型,代表操作环境为最坏(worst),典型(type),最好(best)三种情况,当然也有其他形式的库如fast.db、slow.db等。 DC综合中还要进行静态时序分析,这一点在很多教程中都有讲解,就不在赘述。需要记得的就是在DC中需要进行时序约束,与在其他软件

Linux命令——shell

不羁的心 提交于 2019-12-04 20:08:30
shell:是指“为使用者提供操作界面”的软件,接收用户命令,然后调用相应的应用程序,分为命令行式shell和图形界面shell。 文件命名规范:文件名.sh (.sh是linux下bash shell 的默认后缀) 一.shell脚本程序 例1.输出hello world 创建——编辑——输入代码——修改权限(可执行)——执行脚本 1)创建文件test.sh 2)编辑内容 注:输出的内容如果包含字母和符号(不包含变量),则需要用引号包括起来。如果是纯数字可以包也可以不包。 3)修改权限为可执行,执行该文件 例2. 使用root用户帐号创建并执行test2.sh,实现创建一个shelltest用户,并在其家目录中新建文件try.html 注:第一次创建时未切换root用户,无权限创建用户 二.变量的使用 变量名的规范: 1)命名只能使用英文字母,数字和下划线,首个字符不能以数字开头 2)中间不能有空格,可以使用下划线“_”,不能使用标点符号 3)变量名的长度不得超过255个字符 4)不能使用bash里的关键字(可用help命令查看保留关键字)。 注:在使用变量的时候一定需要在变量名前面添加一个$符号 例1:使用变量输出hello world 注:双引号能够识别变量,双引号能够实现转义(类似于“\*”) 单引号是不能识别变量,只会原样输出,单引号是不能转义的 反引号

Linux之shell详解

百般思念 提交于 2019-12-04 19:09:59
Shell是什么 Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。Ken Thompson 的 sh 是第一种 Unix Shell,Windows Explorer 是一个典型的图形界面 Shell。 查看Linux支持的Shell:vi /etc/shells echo输出命令 echo [选项] [输出内容] 第一个脚本: vi hellol.sh 输入以下命令: #!/bin/bash #wuwuyong echo "hello world" 脚本执行: chmod 755 hello.sh(赋予权限)  ./hello.sh 或Bash hello.sh 历史命令 history [选项] [历史命令保存文件] 选项:-c(清空历史命令)  -w(把缓存中的历史命令写入历史命令保存文件) 别名和快捷键 别名:alias 别名=‘原命令’ (设定命令别名) alias(查询命令别名) 让别名永久生效:vi /root/.bashrc 加上alias 别名=‘原命令’ 删除别名:unalias 别名 输入输出重定向 输入重定向:wc [选项] [文件名] 选项:-c 统计字节数;-w 统计单词数;

shell编程之正则表达式(二)sed工具

笑着哭i 提交于 2019-12-04 19:08:27
sed 工具 sed(Stream EDitor)是一个强大而简单的文本解析转换工具,可以读取文本,并根据指定的条件对文本内容进行编辑(删除、替换、添加、移动等),最后输出所有行或者仅输出处理的某些行。sed 也可以在无交互的情况下实现相当复杂的文本处理操作,被广泛应用于 Shell 脚本中,用以完成各种自动化处理任务。 sed 的工作流程主要包括读取、执行和显示三个过程。 读取:sed 从输入流(文件、管道、标准输入)中读取一行内容并存储到临时的缓 冲区中(又称模式空间,pattern space)。 执行:默认情况下,所有的 sed 命令都在模式空间中顺序地执行,除非指定了行的地址,否则 sed 命令将会在所有的行上依次执行。 显示:发送修改后的内容到输出流。再发送数据后,模式空间将会被清空。 在所有的文件内容都被处理完成之前,上述过程将重复执行,直至所有内容被处理完。 注意:默认情况下,所有的 sed 命令都是在模式空间内执行的,因此输入的文件并不会发生任何变化,除非是用重定向存储输出。 1.sed 命令常见用法 通常情况下调用 sed 命令有两种格式,如下所示。其中,“参数”是指操作的目标文件,当存在多个操作对象时用,文件之间用逗号“,”分隔;而 scriptfile 表示脚本文件,需要用“-f”选项指定,当脚本文件出现在目标文件之前时

Ansible之playbook拓展

自作多情 提交于 2019-12-04 18:28:02
   一、handlers和notify结合使用触发条件   handlers同tasks是属同级,相当于一个特殊任务列表,这些任务同前文说的tasks里的任务没有本质的不同,用于当关注的资源发生变化时,才会采取一定的操作。notify此action可用于在每一个play的最后被触发,这样可避免多次有改变发生时都执行指定的操作,仅在所有的变化发生完成后一次性地执行指定操作,在notify中列出的操作称为handler,换句话说当所关注的资源发生变化时notify将调用handlers中定义的操作。其中notify所在任务就是被监控的任务资源变化的任务,notify可以调用多个handlers定义的操作,一个handlers里可以定义很多任务。 --- - hosts: websers remote_user: root tasks: - name: create apache group group: name=apache gid=80 system=yes - name: create apache user user: name=apache uid=80 group=apache system=yes shell=/sbin/nologin home=/var/www/html - name: install httpd yum: name=httpd - name:

shell脚本编程

跟風遠走 提交于 2019-12-04 17:57:26
Shell 脚本,是一种为 shell 编写的脚本程序。 Shell echo命令 使用echo可以实现更复杂的输出格式控制。 1.显示普通字符串: echo "It is a test" 这里的双引号完全可以省略,以下命令与上面实例效果一致: echo It is a test 2.显示转义字符 echo "\"It is a test\"" 结果将是: "It is a test" 同样,双引号也可以省略 3.显示变量 read 命令从标准输入中读取一行,并把输入行的每个字段的值指定给 shell 变量 #!/bin/sh read name echo "$name It is a test" 以上代码保存为 test.sh,name 接收标准输入的变量,结果将是: [root@www ~]# sh test.sh OK #标准输入 OK It is a test #输出 4.显示换行 echo -e "OK! \n" # -e 开启转义 echo "It is a test" 输出结果: OK! It is a test 5.显示不换行 #!/bin/sh echo -e "OK! \c" # -e 开启转义 \c 不换行 echo "It is a test" 输出结果: OK! It is a test 6.显示结果定向至文件 echo "It is a test" >