shell脚本

Shell脚本编程

拈花ヽ惹草 提交于 2019-12-04 00:55:34
1、Shell脚本是什么? Shell脚本语言为过程式语言,解释运行,依赖于外部程序文件来运行。Shell脚本是命令的堆积,但很多命令不具有幂等性,需要用程序逻辑来判断运行条件是否满足,以避免其运行中发生错误。但并不是所有命令执行失败,都会导致脚本运行终止, 命令执行失败 ,如果产生严重错误,该严重错误指,脚本会exit,任何时候shell脚本或shell解释器遇到exit命令就会终止,或我们使用某种判断机制将其强行终止,或者脚本运行过程中出现语法错误,也可能终止。 编译过程:高级语言–>编译器–>目标代码,如C、C++、Java。 解释过程:高级语言–>解释器–>机器代码,如shell、perl、python。 2、如何编写shell脚本? 脚本文件的第一行顶格,给出shebang,即解释器路径,用于指明解释执行当前脚本的解释器程序文件。常见的解释器如下: #!/bin/bash #!/usr/bin/python #!/usr/bin/perl 3、运行脚本 (1)赋予执行权限,并直接运行此程序文件。 chmod +x /PATH/TO/SCRIPT_FILE /PATH/TO/SCRIPT_FILE (2)直接运行解释器,将脚本以命令行参数传递给解释器程序,脚本不需要执行权限。 bash /PATH/TO/SCRIPT_FILE 4、算术运算 (1)算术运算符:+,-,*,/

shell脚本调用api接口,对返回数据处理并返回结果

主宰稳场 提交于 2019-12-03 23:15:19
1 #!/bin/bash 2 # 经纬度反解析地址区域,调用的是腾讯位置的api 3 4 parse_district(){ 5 url="https://apis.map.qq.com/ws/geocoder/v1/?location=$1,$2&key=4XCBZ-BPJ6G-23JQI-I2FZ3-ZSDQ7-E3BVp" 6 #echo ${url} 7 curl ${url} > index.json 8 # 使用正则提取需要的区域信息,实际有需要可以提取省市等接口返回的其他信息 9 grep -E '"district":(.*?),' index.json > district.info 10 res=`cat district.info` # eg: "district": "海淀区", 11 res=${res##*:} # "海淀区", 12 res=${res:0:-1} # "海淀区" 13 echo ${res} 14 } 15 16 # shell函数默认返回值是函数 打印的结果, 如果要使用return,只能是return int型数字 17 a1=`parse_district "$1" "$2"` 18 echo "这是处理返回后的结果: ${a1}" 上述是shell脚本, 比如文件名是: parse_district.sh

sed文本处理

一个人想着一个人 提交于 2019-12-03 21:10:41
1.基本概述 sed是一个流编辑器, 非交互式的编辑器,它一次处理一行内容. 处理时,把当前处理的行存储在临时缓冲区中,称 * 为“模式空间”(pattern space) 接着用 sed 命令处理缓冲区中的内容,处理完成后, 把缓冲区的内容送往屏幕。 接 着处理下一行,这样不断重复,直到文件末尾。 文件内容并没有改变,除非你 使用重定向存储输出。 Sed 要用来自 动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。 2..sed基础语法 第一种形式:stdout | sed [option] "pattern command" 第二种形式: sed [option] "pattern command" file 3..sed常用选项 -i -r sed相关示例文件 [root@web01 opt]# cat file.txt I love shell I love SHELL This is test file ​ 1.sed-n、-e选项示例 #取消默认输出 [root@web01 opt]# sed -n '/shell/p' file.txt I love shell #编辑多项 [root@web01 opt]# sed -n -e '/shell/p' -e '/SHELL/p' file.txt I love shell I love SHELL 2.sed

centos5.3的tomcat6自动启动

ⅰ亾dé卋堺 提交于 2019-12-03 19:04:57
转自 http://news.wangmeng.cn/detailNews/876 要是tomcat作为一个守护程序运行,需要用到jsvc工具。(这个TOMCAT已经自带了) 1、准备工作 Tomcat安装后,如果让Tomcat用root身份启动,Tomcat将会拥用root权限,这将可能给系统带来安全隐患,黑客可能利用这个来攻击我们的系统,所以我们得添加一个独立运行此服务的用户,用下面的命令: shell>useradd -d /usr/local/tomcat6 -s /usr/sbin/nologin tomcat 以上命令为系统增加一个tomcat用户,并且设置为nologin 设置用户tomcat5对tomcat的权限 shell>chown -R tomcat:tomcat /usr/local/tomcat6 shell>chown -R tomcat:tomcat /opt/apache-tomcat-6.0.14 2、安装jsvc shell>cd /usr/local/tomcat6/bin shell>tar xvfz jsvc.tar.gz shell>cd jsvc-src shell>sh support/buildconf.sh 如果成功,命令终端打印出下面report: support/buildconf.sh: configure script

Shell 学习(二)

▼魔方 西西 提交于 2019-12-03 17:53:24
目录 Shell 学习(二) 1 设置环境变量 1.1 基本语法 1.2 实践 2 位置参数变量 2.1 介绍 2.2 基本语法 2.3 位置参数变量应用实例 3 预定义变量 3.1 基本介绍 3.2 基本语法 3.3 应用实例 4 运算符 4.1 基本介绍 4.2 基本语法 5 条件判断 5.1 基本语法 5.2 应用实例 5.3 常用判断条件 5.4 应用实例 Shell 学习(二) 1 设置环境变量 1.1 基本语法 1)export 变量名=变量值 (功能描述:将shell变量输出为环境变量) 2)source 配置文件 (功能描述:让修改后的配置信息立即生效) 3)echo $变量名 (功能描述:查询环境变量的值) 我们来做个测试,在/etc/profile文件里面新增一个环境变量 1.2 实践 1) 在/etc/profile 文件中定义TOMCAT_HOME环境变量 #!/bin/bash #定义一个自己的环境变量 TOMCAT_HOME=/opt/tomcat export TOMCAT_HOME 2)查看环境变量TOMCAT_HOME的值 echo $TOMCAT_HOME 3)在另外一个shell程序中使用TOMCAT_HOME #使用我们自定的环境变量 echo "tomcat_home=$TOMCAT_HOME" #多行注释 用法为 :<<! ! 注意

企业级自动化运维工具应用实战ansible

荒凉一梦 提交于 2019-12-03 17:32:40
公司计划在年底做一次大型市场促销活动,全面冲刺下交易额,为明年的上市做准备。公司要求各业务组对年底大促做准备,运维部要求所有业务容量进行三倍的扩容,并搭建出多套环境可以共开发和测试人员做测试,运维老大为了在年底有所表现,要求运维部门同学尽快实现,当你接到这个任务时,有没有更快的解决方案? 一、简单介绍 1、定义:   ansible是新出现的自动化运维工具, 基于Python开发 ,集合了众多运维工具(puppet、chef、func、fabric)的优点,实现了 批量系统配置、批量程序部署、批量运行命令 等功能。   ansible是基于 paramiko(框架) 开发的,并且基于 模块化 工作,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。ansible 不需要在远程主机上安装client/agents ,因为它们是 基于ssh 来和远程主机通讯的。ansible目前已经 已经被红帽官方收购 ,是自动化运维工具中大家认可度最高的,并且上手容易,学习简单。是每位运维工程师必须掌握的技能之一。 2、ansible 特点 1)部署简单, 只需在主控端部署Ansible环境 ,被控端无需做任何操作,没有agent; 2) 默认使用 SSH协议 对设备进行管理; 3) 有大量常规运维操作模块,可实现日常绝大部分操作。 4)

shell使用ps -ef|grep xxx时不显示grep xxx进程的方法

流过昼夜 提交于 2019-12-03 17:30:18
在使用ps -ef|grep xxx时会将grep xxx的进程也带出来, 而在脚本中如果想要截取此命令结果的一部分,则grep xxx的进程会显得多余,如下: [root@localhost ~]# ps -ef|grep python root 2829 1 0 Feb28 ? 00:00:13 /usr/bin/python -tt /usr/sbin/yum-updatesd root 17714 17490 0 11:46 pts/0 00:00:00 grep python 加上awk命令截取python的路径那部分则结果如下: [root@localhost ~]# ps -ef|grep python|awk ‘{print $8}’ /usr/bin/python grep 多了grep那一行,那么可以在grep xxx后再加一个grep -v 'grep’来将其去掉,如下: [root@localhost ~]# ps -ef|grep python|grep -v ‘grep’|awk ‘{print $8}’ /usr/bin/python 如此,则grep 被去掉. 原文地址:https://blog.csdn.net/diyiday/article/details/83785118 来源: https://www.cnblogs.com/jpfss/p

shell打印颜色

安稳与你 提交于 2019-12-03 16:58:32
shell脚本中echo显示内容带颜色 shell脚本中echo显示内容带颜色显示,echo显示带颜色,需要使用参数-e 格式如下: echo -e "\033[字背景颜色;文字颜色m字符串\033[0m" 例如: echo -e "\033[41;36m something here \033[0m" 其中41的位置代表底色, 36的位置是代表字的颜色 注:   1、字背景颜色和文字颜色之间是英文的""   2、文字颜色后面有个m   3、字符串前后可以没有空格,如果有的话,输出也是同样有空格   下面是相应的字和背景颜色,可以自己来尝试找出不同颜色搭配 例 echo -e “\033[31m 红色字 \033[0m” echo -e “\033[34m 黄色字 \033[0m” echo -e “\033[41;33m 红底黄字 \033[0m” echo -e “\033[41;37m 红底白字 \033[0m” 字颜色:30—–37   echo -e “\033[30m 黑色字 \033[0m”   echo -e “\033[31m 红色字 \033[0m”   echo -e “\033[32m 绿色字 \033[0m”   echo -e “\033[33m 黄色字 \033[0m”   echo -e “\033[34m 蓝色字 \033[0m”   echo

Linux环境变量

夙愿已清 提交于 2019-12-03 15:33:50
1.环境变量 $HOME表示的是某个用户的主目录。它和波浪号(~)的作用一样 全局环境变量对于shell会话和所有生成的子shell都是可见的。 局部变量则只对创建它们的shell可见。 查看全局变量用printenv或env 查看个别环境变量的值用:printenv 环境变量 例如:printenv HOME //查看HOME这个环境变量的值 2 . 如何设置环境变量 设置局部环境变量:   echo $my_variable   my_variable=Hello   若变量需要赋含有空格的字符串值,则需要用双引号""来界定含空格字符串首尾   echo my_variable   my_variable="Hello World" 所有的环境变量名均使用大写字母,这是bash shell的标准惯例。如果是你自己创建的局部变量或是shell脚本,请使用小写字母。变量名区分大小写。在涉及用户定义的局部变量时坚持使用小写字母,这能够避免重新定义系统环境变量可能带来的灾难。 设置了局部环境变量后,就能在shell进程的任何地方使用它了。但是,如果生成了另外一个shell,它在子shell中就不可用。 创建全局变量的方法是:先创建一个局部变量,然后在导出到全局环境中(该过程由export完成,变量名前不需要加$):   my_variable="I am Global Now"  

Linux shell 中$() ` `,${},$[] $(()),[ ] (( )) [[ ]]作用与区别

*爱你&永不变心* 提交于 2019-12-03 15:21:42
转载自 https://blog.csdn.net/x1269778817/article/details/46535729 参考: https://stackoverflow.com/questions/669452/is-double-square-brackets-preferable-over-single-square-brackets-in-ba https://unix.stackexchange.com/questions/68694/when-is-double-quoting-necessary $()和 ` ` : 在 bash shell 中,$( ) 与` ` (反引号) 都是用来做命令替换用(commandsubstitution)的。 例如 version=$(uname -r)和version=`uname -r`都可以是version得到内核的版本号 各自的优缺点: 1. ` ` 基本上可用在全部的 unix shell 中使用,若写成 shell script ,其移植性比较高。但反单引号容易打错或看错。 2. $()并不是所有shell都支持。 ${ } : ${ }用于变量替换。一般情况下,$var 与${var} 并没有啥不一样。但是用 ${ } 会比较精确的界定变量名称的范围。比如 $ A=B $ echo $AB 原本是打算先将 $A