shell编程规范及变量

shell编程规范及变量

一、编写脚本的基本流程;

1.shell脚本语言:帮助管理员实现批量化完成任务,结合计划任务实现自动化运维;
2.编写脚本的流程:
a.创建目录,集中存放脚本文件;
b.编写脚本内容;
vi 脚本名.sh ##编辑脚本文件
#!/bin/bash ##声明解释器
#注释内容 ##可以注释些信息,方便后续查看
命令及控制语句 ##脚本的核心内容
:wq ##保存文件
c.赋予脚本文件执行权限:chmod +x 文件
d.运行脚本;
3.脚本的声明:声明使用哪种解释器,cat /etc/shells文件中的所有解释器都可以使用,解释器可安装;
4.执行脚本的方式:
a.路径执行(必须有执行权限);
相对路径
绝对路径
b.source 脚本的绝对路径或相对路径(不需要执行权限);
c.sh -x 脚本的路径(不需要执行权限),并且会显示命令和输出结果;

二、脚本的基础知识;

  1. 重定向:改变了标准的输入输出状态;

    :重定向输出到某个位置,替换原有文件的所有内容;

    :重定向追加输出到某个位置,在原有文件的末尾添加内容;
    <:重定向输入某个位置的文件;
    2>:重定向错误输出;
    2>>:重定向错误追加输出到文件的末尾;
    &>:混合重定向输出,正确错误的输出结果都会输出;
    1,2>:同上;
    2.管道符:将|前的命令的输出结果作为管道|后的命令的输入;
    3.echo命令:返回结果并显示;
    语法:echo [选项] "需要返回的值"
    选项: 选项-e 若出现特殊字符则不将其转义,当普通字符对待;
    在返回值中\n 代表强制换行、\t代表制表符;
    内容中的选项:"内容\t内容" 插入tab
    "内容\n内容" 强制换行

    三、脚本中的变量的应用;

    1.概述:变量是一个筐,筐里装的是变量的值,只需要将筐带走,那么值也就随之带走,值为可变;
    2.优点:简化输入,使脚本内容更加清晰,提高脚本的适用性;
    3.分类:自定义变量、环境变量、位置变量、预定义变量;
    4.自定义变量的定义:
    a.定义变量:变量名=变量值
    b.查看变量:echo $变量名
    c.使用变量:在命令中直接使用 $变量名
    d.取消变量:unset 变量名
    e.变量的作用范围:
    局部变量:变量名=变量值,此种变量只能在当前bash中有效;
    全局变量:export 变量名=变量值,此种变量在当前bash和当前子bash中有效;
    注:可用 bash命令开启当前进程的子进程bash,exit退回到父bash进程;
    f.变量值中使用的括号:
    "":弱引用,会将双引号内的特殊符号与命令一起执行,例:A="ls -ld"
    '':强引用,会将单引号内的$、"、\等特殊符号失效,例:B="$A /etc/ ",B='$A /etc/';
    `:在定义变量时,引用命令,在值中引用变量等同于$(),''不可嵌套,$()可以嵌套;例:A=du -sh /etc/`
    $():在定义变量时,引用命令,可以嵌套;例:AC=$(rpm -qf $(which rz))
    注:当变量值中包含'单引号时,应使用\'将单引号进行转义;
    g.变量名不能使用特殊符号,一般用大写字母和下划线;
    h.交互定义变量:
    read -p "提示文字信息" 变量的名称
    提示文字信息:123
    echo $变量名
    123
    5.环境变量的定义:
    a.环境变量设置用户工作环境,名称不能修改,值可以修改;
    b.环境变量的常用:
    PATH=设置外部命令的存放的路径,用冒号隔开
    TMOUT=设置登录超时,单位为秒
    HISTSIZE=设置历史命令记录的条数
    LANG=设置语言环境(vi /etc/sysconfig/i18n 进行永久修改字符集)
    注:设置临时环境变量时(注销就失效了):export PATH=
    c.环境变量的查看:env命令查看当前工作环境的所有环境变量;
    /etc/profile文件为用户每次登陆执行的的配置文件;
    每个用户家目录中的.bash_profile是每个用户独立的环境变量配置文件;
    6.位置变量和预定义变量:
    a.位置变量用于将脚本参数传递给脚本,有$1-$9,除命令或脚本本身外的所有;
    b.预定义变量:用户只能使用,不能创建,不能直接赋值;
    $0:为脚本本身或命令本身
    $*:为脚本后的所有参数
    $#:脚本参数数量统计
    $?:上一条命令是否执行成功,返回值为0则成功,否则失败
    注:在shell脚本中,所有的路径必须为绝对路径;

第五章实验(一):编写脚本
使用母盘克隆一个虚拟机,并命名为shell脚本测试机。
一.练习脚本的基本编写流程:
1.确定任务及完成任务的命令
2.编写脚本整合任务
3.授权并测试执行

[root@www ~]# mkdir -p /root/bin
[root@www ~]# cd /root/bin
[root@www bin]# vi sysinfo.sh 
#!/bin/bash    ##从/etc/shells中选择一个shell解析下面的内容
#by linuxfan
#20160614
#system info.
#我的第一个脚本,这是一个注释
#查看网络相关信息
ip a
hostname
cat /etc/hosts
cat /etc/resolv.conf
ip r
#查看设备包括内存、cpu、磁盘等使用情况
cat /proc/cpuinfo
lscpu
cat /proc/meminfo |grep -i total
free 
cat /proc/partitions
df -hT
##查看进程和服务情况
ps aux |wc -l
service --status-all
chkconfig --list |grep 3:on
:wq
[root@www bin]# chmod +x sysinfo.sh   ##授权
[root@www bin]# /root/bin/sysinfo.sh   ##路径执行
[root@www bin]# sh -x sysinfo.sh  ##测试时常用不需要执行权限
[root@www tmp]# source sysinfo.sh  ##一般用于让配置文件生效等,不需

要执行权限

二.变量及管道的使用:
1.使用变量,编写安装apache的脚本:

[root@www bin]# vim install_httpd.sh 
#!/bin/bash
#by fage 2016-01-14
#install apache httpd!
#############download httpd#####
HV=httpd-2.2.17
wget ftp://ftp.linuxfan.cn/tools/$HV.tar.gz -P /root
##########解压缩,并安装#############
tar zxvf /root/$HV.tar.gz -C /usr/src/ >/dev/null
cd /usr/src/$HV/
./configure --prefix=/usr/local/httpd --enable-so --enable-cgi --enable-rewrite --enable-ssl&&make &&make install &>/dev/null
:wq

以此类推,编写安装mysql及php的脚本
chmod +x install_httpd.sh
/root/bin/install_httpd.sh ##执行脚本并安装
ls /usr/local/httpd
2.练习重定向和管道:

[root@www bin]#ip a |grep eth0 |grep inet |awk {'print $2'} |awk -F '/' {'print $1'}
[root@www bin]# vim  hosts.sh 
#!/bin/bash
#2016-01-14 by linuxfan
##设置hosts解析,为www.linuxfan.cn
IP=$(ip a |grep eth0 |grep inet |awk {'print $2'} |awk -F '/' {'print $1'})
read -p "input FQDN:" NANE
echo "$IP    $NANE"  >>/etc/hosts
:wq
[root@www bin]#sh -x hosts.sh
[root@www bin]#cat /etc/hosts
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值