shell脚本实例

Shell——你只需要了解这么多

烂漫一生 提交于 2019-12-02 06:05:09
一.Shell简介 Shell是一个用C语言编写的程序,通过Shell用户可以访问操作系统内核服务,类似于DOS下的command和后来的cmd.exe。Shell既是一种命令语言,又是一种程序设计语言。作为命令语言,它交互式地解释和执行用户输入的命令;作为程序设计语言,它定义了各种变量、参数、函数、流程控制等等。它调用了系统核心的大部分功能来执行程序、建立文件并以并行的方式协调各个程序的运行。因此,对于用户来说,shell是最重要的实用程序,深入了解和熟练掌握shell的特性极其使用方法,是用好Unix/Linux系统的关键。 二.两类程序设计语言 我经常说道shell脚本,其实是因为Shell是一种脚本语言,也就是解释性语言。程序设计语言可以分为两类:编译型语言和解释型语言。 语言 区别 编译型语言 需要预先将我们写好的源代码转换成目标代码,这个过程被称作“编译”。运行程序时,直接读取目标代码。由于编译后的目标代码非常接近计算机底层,因此执行效率很高,这是编译型语言的优点 解释型语言 也叫做脚本语言。执行这类程序时,解释器需要读取我们编写的源代码,并将其转换成目标代码,再由计算机运行。因为每次执行程序都多了编译的过程,因此效率有所下降 三.Shell脚本解释器 Linux的Shell脚本解释器种类众多,一个系统可以存在多个shell脚本解释器,可以通过cat /etc

ansible学习总结

倖福魔咒の 提交于 2019-12-02 05:40:15
1 前言 Ansible是新出现的运维工具是基于Python研发的糅合了众多老牌运维工具的优点实现了批量操作系统配置、批量程序的部署、批量运行命令等功能。 ansible是基于模块工作的ansible本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块ansible只是提供一种框架。 2 ansible 的基本使用 2.1 安装 其实ansible的安装的方式有很多中,如下: 从源码运行 通过Yum安装最新发布版本 通过Apt (Ubuntu)安装最新发布版本 通过 Portage (Gentoo)安装最新发布版本 通过 pkg (FreeBSD)安装最新发布版本 通过 Homebrew (Mac OSX)安装最新发布版本 通过 Pip 安装最新发布版本 发行版的Tarball。 我这儿就只介绍在centos系统上通过yum来安装ansible 2.1.1 关闭防火墙和selinux # service iptables stop 可以看到防火墙已经关闭了 #setenforce 0 可以看到selinux已经关闭了 2.1.2 安装EPEL第三方yum源: # rpm -Uvh http://ftp.linux.ncsu.edu/pub/epel/6/i386/epel-release-6-8.noarch.rpm 2.1.3 安装Ansible # yum

Shell 脚本语法

怎甘沉沦 提交于 2019-12-02 04:47:31
语法: 1. echo "Hello World !" //echo 命令用于向窗口输出文本 2.your_name="runoob.com" //变量名定义,变量名和等号之间不能有空格 命名规则: 命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。 中间不能有空格,可以使用下划线(_)。 不能使用标点符号。 不能使用bash里的关键字(可用help命令查看保留关键字) 3.使用变量 加$ ,加花括号是为了帮助解释器识别变量的边界 echo ${your_name} 4.只读变量 readonly readonly myUrl 5.删除变量 unset ,不能删除只读变量 unset your_name 6.变量类型 1) 局部变量 局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量。 2) 环境变量 所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。必要的时候shell脚本也可以定义环境变量。 3) shell变量 shell变量是由shell程序设置的特殊变量。shell变量中有一部分是环境变量,有一部分是局部变量,这些变量保证了shell的正常运行 二 字符串 1.单引号 双引号区别 双引号内可以引用变量 双引号内可以出现转义字符 2.获取字符串长度 string="abcd

shell中函数的使用

[亡魂溺海] 提交于 2019-12-02 02:10:07
  函数是一个脚本代码块,你可以对它进行自定义命名,并且可以在脚本中任意位置使用这个函数。如果想要这个函数,只要调用这个函数的名称就可以了。使用函数的好处在于模块化以及代码可读性强。 (1).函数的创建语法   函数的创建方法一: function 函数名称 { 命令 }   函数的创建方法二: 函数名称() { 命令 }    注意:函数名称在当前脚本必须唯一。   调用函数的方法: 函数名称 参数1 参数2 ......    调用函数时可以传递参数,函数中使用$1、$2......来引用传递的参数。 (2).函数的使用实例   实例1: [root@youxi1 ~]# vim a.sh #!/bin/bash function fun1 { echo "hello world" } fun2() { echo $[$1+$2] } fun1 fun2 1 2 [root@youxi1 ~]# sh a.sh hello world 3   实例2: 如果存在相同名称的函数,以最后一个为准 [root@youxi1 ~]# vim b.sh #!/bin/bash function fun1 { echo "hello world" } fun1() { echo "This is rewrite" } fun1 [root@youxi1 ~]# sh b.sh This

shell中的shift左移参数命令

血红的双手。 提交于 2019-12-01 22:08:31
  shift命令用于对参数的向左移动, 通常用于在不知道传入参数个数的情况下依次遍历每个参数,然后进行相应的处理(常见与Linux中各种程序的启动脚本)。 在扫描处理脚本程序的参数时,经常要用到shift命令。   shift命令每执行一次,参数序列顺次左移一个位置,$#的值减1,用于分别处理每个参数,移出去的参数不再可用。    注意:$#表示脚本后跟随的参数总的个数,$n可以获取脚本后跟随的第n个参数的值。   实例:加法计算 [root@youxi1 ~]# vim a.sh #!/bin/bash if [ $# -le 0 ] ; then echo "没有足够的参数" exit fi sum=0 while [ $# -gt 0 ] ; do sum=$[$sum+$1] shift done echo result is $sum [root@youxi1 ~]# sh a.sh 没有足够的参数 [root@youxi1 ~]# sh a.sh 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 result is 120    来源: https://www.cnblogs.com/diantong/p/11718504.html

shell学习笔记

末鹿安然 提交于 2019-12-01 19:48:14
Shell Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。 第一个shell脚本 1 #!/bin/bash 2 echo "Hello World !" #! 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种 Shell。 echo 命令用于向窗口输出文本。 运行 Shell 脚本有两种方法: 1、作为可执行程序 将上面的代码保存为 test.sh,并 cd 到相应目录: chmod +x ./test.sh #使脚本具有执行权限 ./test.sh #执行脚本 使用变量 使用一个定义过的变量,只要在变量名前面加美元符号即可,如: 1 your_name="xieshaoxiong" 2 echo $your_name 3 echo ${your_name} Shell 字符串 字符串可以用单引号,也可以用双引号,也可以不用引号。 str='this is a string' 拼接字符串 your_name="xieshaoxiong" # 使用双引号拼接 greeting="hello, "$your_name" !" greeting_1="hello, ${your_name} !" echo $greeting $greeting_1 # 使用单引号拼接

shell学习笔记

雨燕双飞 提交于 2019-12-01 18:54:16
上一级 .. 当前目录 . 当前用户目录 ~ 根目录 / 常用命令详解 cd 跳转目录命令 特殊跳转 跳转上一级 .. 跳转当前目录 . 跳转当前用户目录 ~ 跳转根目录 / 跳转上一个目录 cd - 跳转前n目录 cd -n 跳转后n目录 cd +n watch watch命令以周期性的方式执行给定的指令,指令输出以全屏方式显示。watch是一个非常实用的命令,基本所有的Linux发行版都带有这个小工具,如同名字一样,watch可以帮你监测一个命令的运行结果,省得你一遍遍的手动运行。 语法 watch(选项)(参数) 选项 -n:指定指令执行的间隔时间(秒); -d:高亮显示指令输出信息不同之处; -t:不显示标题。 参数 指令:需要周期性执行的指令。 实例 1234567 watch uptimewatch -t uptimewatch -d -n 1 netstat -ntlpwatch -d 'ls -l | fgrep goface' //监测goface的文件watch -t -differences=cumulative uptimewatch -n 60 from //监控mailwatch -n 1 "df -i;df" //监测磁盘inode和block数目变化情况 tail 实时查看文件内容(可用于查看log文件) 1 tail -f (fileName)

Shell脚本语言学习总结

拈花ヽ惹草 提交于 2019-12-01 08:58:46
Shell 是一种脚本程序,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以了。 编写第一个Shell 程序    在linux命令行执行 [root@iz2zeexr9tk4ckr7dp9vwsz test]# echo "我的第n个shell 程序" 我的第n个shell 程序   打开文本编辑器, 新疆一个名称为xxx.sh的文件,例如:test.sh #!/bin/bash echo "Hello Word !"#编辑完成后使用命令,使test.sh脚本具有执行权限:chmod +x ./test.sh #执行程序./test.sh #控制台输出Hello Word ! #! :是一种约束标记, 它告诉系统使用什么命令执行脚本, 即使用那种shell。 echo:命令用于在控制太输出文本。 chmod +x ./xxx.sh : 使xxx.sh 脚本具有执行权限 Shell 变量   变量名命名规则: 命名只能使用英文字母、下划线、数字,首个字符不能为数字。 中间不能有空格,可以使用(_)代替 不能使用标点符号 不能使用bash里面的关键字, 可以使用help查看关键字,保留字   使用变量    使用一个定义过的变量,只要在前面加上美元符号即可,加花括号是为了帮助解释器识别变量的边界 your_name="你的名称,第一个变量值" echo ${your

shell 下执行mysql 命令

爱⌒轻易说出口 提交于 2019-12-01 08:21:15
【MySQL】常用拼接语句 前言: 在MySQL中 CONCAT ()函数用于将多个字符串连接成一个字符串,利用此函数我们可以将原来一步无法得到的sql拼接出来,在工作中也许会方便很多,下面主要介绍下几个常用的场景。 注: 适用于5.7版本 低版本可能稍许不同。 1.拼接查询所有用户 mysql">SELECT DISTINCT CONCAT( 'User: \'', USER, '\'@\'', HOST, '\';' ) AS QUERY FROM mysql.USER; # 当拼接字符串中出现'时 需使用\转义符 2.拼接DROP table SELECT CONCAT( 'DROP table ', TABLE_NAME, ';' ) FROM information_schema. TABLES WHERE TABLE_SCHEMA = 'test'; 3.拼接kill连接 SELECT concat('KILL ', id, ';') FROM information_schema. PROCESSLIST WHERE STATE LIKE 'Creating sort index'; 4.拼接创建 数据库 语句 SELECT CONCAT( 'create database ', '`', SCHEMA_NAME, '`', ' DEFAULT CHARACTER

Linux Shell 基础知识(二)

落花浮王杯 提交于 2019-12-01 02:21:23
1.本文知识结构 2.文件的查询与检索 2.1. cd 目录切换 找到文件/目录位置:cd 切换到上一个工作目录: cd - 切换到home目录: cd or cd ~ 显示当前路径: pwd 更改当前工作路径为path: $cd path 2.2. locate 查找目录及文件 find 实时查找 locate 为文件系统建立索引数据库,如果有文件更新,需要定期执行更新命令来更新索引库,在查找文件之前要先更新数据库 # 搜寻文件或目录: $find ./ -name "core*" | xargs file # 查找目标文件夹中是否有obj文件: $find ./ -name '*.o' # 递归当前目录及子目录删除所有.o文件 $find ./ -name "*.o" -exec rm {} \; # 寻找包含有string的路径 $updatedb $locate string 2.3. chown 文件与目录权限修改 改变文件的拥有者 chown 改变文件读、写、执行等属性 chmod 递归子目录修改: chown -R tuxapp source/ 增加脚本可执行权限: chmod a+x myscript 2.4. 管道和重定向 批处理命令连接执行,使用 | 串联: 使用分号 ; 前面成功,则执行后面一条,否则,不执行:&& 前面失败,则后一条执行: || 重定向: >