shell脚本

shell脚本语法

匿名 (未验证) 提交于 2019-12-02 23:30:02
其他: fgrep 不适用真正表达式,速度块 面向过程:着眼点在过程中 面向对象:对象 SHELL脚本编程: 父shell赋予的变量 在子shell中是无法获取到的 变量赋值: name=jerry 变量的引用:$name 也可以使用${name} 大多数情况下{}是可以使用的 animal=pig echo "there are some ${annimal}s" 本地变量 name=value(生命周期,整个bash) 局部变量 local varname=value 作用域 当前代码段 环境变量: 作用域 当前shell进程及其子进程 脚本在执行时,会启动一个子shell进程,所以当前脚本申明的环境变量是有用的 命令航中启动脚本会集成当前shell环境变量 系统自动执行的脚本(非命令行启动)就需要自我定义环境变量 位置变量 $1,$2 特殊变量: $?:上一个命令执行状态返回值: 输出重定向: > >> 2> 2>> &> /dev/null 设备,软件设备,bit bucket 作用:不显示内容,吞噬任何输出 用于消除不想显示的输出 unset name 取消变量 消除变量所占的内存gc 查看当前shell的变量 set 查看当前shell的环境变量 printenv env export 脚本:命令的堆砌 条件比较判断 if[ expression ] if[ [

Ansible批量自动化管理工具

匿名 (未验证) 提交于 2019-12-02 23:03:14
批量管理服务器的工具 无需部署agent,通过ssh进行管理 流行的自动化运维工具: https://github.com/ansible/ansible 可视化运维(主要用在可视化部署) 持续构建,可以和git,svn结合 可结合ssh实现可视化运维 可结合ansible实现可视化运维 Centos7.5(yum -y install net-tools vim) 关闭防火墙(systemctl stop firewalld,systemctl disable firewalld) 关闭selinux 安装支持包 [root@ansibel ~]# yum -y install lrzsz vim net-tools gcc gcc-c++ ncurses ncurses-d evel unzip zlib-devel zlib openssl-devel openssl 源码编译Python3.5 [root@ansibel ~]# tar xf Python-3.5.2.tgz -C /usr/src/ [root@ansibel ~]# cd /usr/src/Python-3.5.2/ [root@ansibel Python-3.5.2]# ./configure --prefix=/usr/local/python/ [root@ansibel Python-3.5

Shell编程-08-Shell中的循环语句

匿名 (未验证) 提交于 2019-12-02 22:59:29
while 、 until 、 for 和 select 等。 while <条件表达式> do 语句 done 1、使用exec exec < FILE while read line do command done 2、使用cat和管道 cat FILEPATH/FILE | while read line do command done 3、在done后使用重定向 while read line do command done < FILE 1、打印数字 [root@localhost Test]# cat while.sh #!/bin/bash a=$1 while [ ${a} -ge 0 ] do echo "Current number is:" ${a} a=$((a-1)) done [root@localhost Test]# bash while.sh 5 Current number is: 5 Current number is: 4 Current number is: 3 Current number is: 2 Current number is: 1 Current number is: 0 2、读取文件 # 读取网卡配置文件 [root@localhost Test]# cat readnet.sh #!/bin/bash while read

2.1 shell语句

匿名 (未验证) 提交于 2019-12-02 22:56:40
一、条件选择if语句 选择执行: 注意:if语句可嵌套 单分支 if 判断条件;then 条件为真的分支代码 fi 双分支 if 判断条件; then 条件为真的分支代码 else 条件为假的分支代码 fi 多分支 if 判断条件1; then 条件为真的分支代码 elif 判断条件2; then 条件为真的分支代码 elif 判断条件3; then 条件为真的分支代码 else 以上条件都为假的分支代码 fi 例子: 1、编写脚本/root/bin/createuser.sh,实现如下功能:使用一个用户名做为参数,如果指定参数的用户存在,就显示 其存在,否则添加之;显示添加的用户的id号等信息 vim createuser.sh #!/bin/bash read -p "please input username:" username useradd $username &> /dev/null if [ $? -eq 0 ];then echo "add $username user" && id $username else echo "the user already exits" fi 2、编写脚本/root/bin/checkint.sh,判断用户输入的参数是 否为正整数 vim checkint.sh #!/bin/bash read -p "please input

使用shell脚本自动安装Apache2.4.35

匿名 (未验证) 提交于 2019-12-02 22:56:40
安装环境Centos7,联网进行安装。 脚本如下: #!/bin/bash [ $(id -u) != "0" ] && echo "error,not root user" && exit 1 export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/bin:/usr/sbin which httpd if [ $? -eq 0 ];then yum remove 'yum list installed | grep httpd' -y #移除httpd 在已经安装的软件中搜索httpd 然后卸载 exit 1 fi if [ ! -d /opt ];then #检查是/opt是否为目录,不是则创建并进入,是则进入 mkdir /opt && cd /opt else cd /opt fi echo "是否下载apache(y/n)" read -p "请输入y/n" cho case $cho in y) echo "正在下载Apache" wget https://mirrors.tuna.tsinghua.edu.cn/apache//httpd/httpd-2.4.35.tar.bz2 wget http://mirrors.hust.edu.cn/apache//apr/apr-1.6.5.tar.gz

Shell脚本语言

匿名 (未验证) 提交于 2019-12-02 22:56:40
Shell是一种脚本语言,那么,就必须有解释器来执行这些脚本,常见的脚本解释器有: bash:是Linux标准默认的shell。bash由Brian Fox和Chet Ramey共同完成,是BourneAgain Shell的缩写,内部命令一共有40个。 sh: 由Steve Bourne开发,是Bourne Shell的缩写,sh 是Unix 标准默认的shell。 另外还有:ash、 csh、 ksh等。 常见的编程语言分为两类:一个是编译型语言,如:c/c++/java等,它们远行前全部一起要经过编译器的编译。另一个解释型语言,执行时,需要使用解释器一行一行地转换为代码,如:awk, perl, python与shell等。 Shell 经过了POSIX的标准化,所以它是可以在不同的linux系统上进行移植。 关于注释的问题: 在shell中使用#进行注释,注意,sh里面没有多行注释,只能每一行加一个#号; 第一个shell脚本程序: #!/bin/bash 上面中的 #! 是一种约定标记, 它可以告诉系统这个脚本需要什么样的解释器来执行; echo "Hello, world!" 变量: 定义变量: country="China" Number=100 注意: 1,变量名和等号之间不能有空格; 2,首个字符必须为字母(a-z,A-Z)。 3, 中间不能有空格,可以使用下划线

shell脚本学习(7)sort

做~自己de王妃 提交于 2019-12-02 22:45:48
1 sort的格式 sort [options] [files] sort 参数 文件 2 参数 -t 用单个符char作为默认的字段分隔符, 默认字段分隔符是空白 参数-k 用来定义排序键值字段 一般是 -t分割好字段, 再在字段中 原始数据 t:说明原数据 按:分段 k1 说明指定字段1, 键值会从该字段的开始, 一直到字段结束而非字段的结尾。(也就是范围很大咯) 排序1 这种排序没看出是做什么用的 sort -t: -k1 /etc/passwd 排序2 k用逗号修饰, 表示排序键值由第一个字段值的开始出开始, 结束于第二个字段的结尾位置 这里1,1 是说键值用第一个字段表示 sort -t: -k1,1 /etc/passwd 和上面的结果没差别,但理论上不同 排序3 指定键值为第三段,并按数字比较,然后倒叙 sort -t: -k3,3nr /etc/passwd k的修饰符 n 表示按照数字(整数)比较 k的修改符 r 表示按照倒置排序 排序 4 先按字段4的整数排序, 再按字段3 的整数排序 通过写两个 -k 字段号,字段号n来实现 sort -t: -k4,4n -k3,3n /etc/passwd 比对这3组可以看出是先看第四字段排序了, 再按第三字段排 排序 5 只输出位置的排序记录,有点拗口, 就是比对的键值重复出现 sort -t: -k4,4n -u

Shell的18条常用命令整理

无人久伴 提交于 2019-12-02 22:31:54
Shell的18条常用命令整理 1、 ls: 类似于dos下的dir命令 ls最常用的参数有三个: -a -l -F。 ls –a Linux上的文件以.开头的文件被系统视为隐藏文件,仅用ls命令是看不到他们的,而用ls -a除了显示一般文件名外,连隐藏文件也会显示出来。 ls –l 该参数显示更详细的文件信息。 ls –F 使用这个参数表示在文件的后面多添加表示文件类型的符号,例如*表示可执行,/表示目录,@表示连结文件,这都是因为使用了-F这个参数。但是现在基本上所有的Linux发行版本的ls都已经内建了-F参数,也就是说,不用输入这个参数,我们也能看到各种分辨符号。 2、cd: 用于切换用户当前工作目录 cd aaa 进入aaa目录 cd 命令后不指定目录,会切换到当前用户的home 目录 cd ~ 作用同cd后不指定目录,切换到当前用户的home 目录 cd - 命令后跟一个减号,则会退回到切换前的目录 cd .. 返回到当前目录下的上一级目录 3、pwd:用于显示用户当前工作目录 4、mkdir 和 rmdir midir:创建目录 rmdir:删除目录 两个命令都支持-p参数,对于mkdir命令若指定路径的父目录不存在则一并创建,对于rmdir命令则删除指定路径的所有层次目录,如果文件夹里有内容,则不能用rmdir命令 如下: mkdir -p 1/2/3 rmdir

shell脚本基础日常练习

醉酒当歌 提交于 2019-12-02 22:15:43
1、编写一个脚本,名为/root/bin/createscripts.sh ,当执行该脚本时,输入 createscripts.sh /path/newsh.sh 则会在指定路径生成脚本文件,并涵盖注释信息如下: #!/bin/bash # ------------------------------------------ # Filename: hello.sh # Revision: 1.0 # Date: 2020/01/01 # Author: ty # Email: ty@gmail.com # Website: www.ty.com # Description: # ------------------------------------------ # Copyright: 2020ty # License: GPL 并自动打开该 文件,开始编辑,在编辑结束后,自动给该脚本加上执行权限。 方法一: #!/bin/bash # A=`basename $1 |grep -o "\.sh$"` #echo $A if [ -n "$A" ];then echo -e "#!/bin/bash \n#" >> $1 echo "#---------------------------------------" >> $1 echo "# Filename:

php页面传参给shell脚本

匿名 (未验证) 提交于 2019-12-02 22:11:45
代码如下: <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>MAC search</title> </head> <body align="middle" bgcolor="gray"> <h1><font size="20" face="Verdana" color="blue">MAC search</font></h1> <form action="" method="post"> MAC: <input type="text" name="mac" size="20"/> <input type="submit" value="submit"/> </form> <?php if(isset($_POST['mac'])&&$_POST['mac']!=''){ $output = shell_exec("macsearch $mac"); echo "$output"; } ?> </body> </html> 分析如下: 补充:今天遇到一个问题,通过php页面执行这个脚本的时候无效,macsearch脚本中的wget命令未执行(macsearch脚本在博文《字符串按位数分隔》中有) 来源:博客园 作者: ashaff 链接:https:/