shell脚本编程规范与常见的变量

一,shell脚本编程规范

1,shell脚本的概念

  • 将要执行的命令按顺序保存到一个文本文件
  • 给该文件可执行权限
  • 可结合各种shell控制语句以完成更复杂的操作

2,shell脚本的应用场景

  • 重复性操作
  • 交互性任务
  • 批量事务处理
  • 服务运行状态监控
  • 定时任务执行

3,什么是shell脚本?

简单地说,只要将平时使用的各种linux命令按顺序保存到一个文本文件中,然后添加可执行权限,这个文件就成为一个shell脚本了

4,shell脚本的作用

(1)shell相当于命令解释器,“翻译官”
  • 介于系统内核与用户之间,负责解释命令行
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QESPOA57-1604968241632)(en-resource://database/853:1)]
(2)用户的登录shell
  • 登录后默认使用的shell程序,一般为 /bin/bash
  • 不同shell的内部指令,运行环境等会有所区别
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6Y3dzpSV-1604968241635)(en-resource://database/855:1)]
(3)通过/etc/shells文件了解当前系统所支持的shell脚本种类
[root@server1 ~]# cat /etc/shells  
/bin/sh
/bin/bash     ### /bin/bash 目前为止大多数Liunx版本才用的默认shell脚本
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/bin/tcsh
/bin/csh
[root@server1 ~]# 

5,shell编程规范

(1)编写脚本代码
  • 使用vim文本编辑器
  • 每行一条linux命令,按执行顺序依次编写
[root@server3 ~]# vi first.sh
[root@server3 ~]# cat first.sh     //以下为脚本编辑的内容
cd /boot/
pwd
ls -lh vml*
(2)赋予可执行权限
  • 使脚本具有可执行属性
    chmod +x first.sh
(3)执行脚本的三种方式
  • 方法一: sh 脚本文件路径 (不需要执行权限也可操作))
[root@server3 ~]# sh first.sh
/boot
-rwxr-xr-x. 1 root root 5.7M 9月   8 02:47 vmlinuz-0-rescue-8a29d4d8924c41d79519fbb0048b74a6
-rwxr-xr-x. 1 root root 5.7M 8月  23 2017 vmlinuz-3.10.0-693.el7.x86_64
  • 方法二:./ 脚本文件路径 (需要执行权限来操作))
[root@server3 ~]# ./first.sh
bash: ./first.sh: 权限不够
[root@server3 ~]# chmod +x first.sh
[root@server3 ~]# ./first.sh
/boot
-rwxr-xr-x. 1 root root 5.7M 9月   8 02:47 vmlinuz-0-rescue-8a29d4d8924c41d79519fbb0048b74a6
-rwxr-xr-x. 1 root root 5.7M 8月  23 2017 vmlinuz-3.10.0-693.el7.x86_64
  • 方法三: source 脚本文件路径 (立马工作让环境生效,并且不需要执行权限 ,同时也会自动切入到脚本中的环境)也可以通过.来执行(注意用.来执行的时候要注意空格)
[root@server3 ~]# source first.sh
/boot
-rwxr-xr-x. 1 root root 5.7M 9月   8 02:47 vmlinuz-0-rescue-8a29d4d8924c41d79519fbb0048b74a6
-rwxr-xr-x. 1 root root 5.7M 8月  23 2017 vmlinuz-3.10.0-693.el7.x86_64
[root@server3 boot]# pwd
/boot
[root@server3 boot]# 
(4)一个更加完善的脚本构成

完善脚本构成的三大要素: 脚本声明, 注释信息 , 可执行语句
例如:

[root@server1 ~]# vim /first.sh             //以下行为编辑的脚本内容
#!/bin/bash        //指明运行的目录
# this is my first shell-script                //关于脚本的说明情况
cd /boot       
echo "当前的目录位于:“                    //输出友好提示信息
pwd 
echo "其中以vml开头的文件包括:“  
ls -lh vml*
[root@server1 ~]# sh /first.sh    用sh来执行  
当前的目录位于:“   
pwd 
echo 其中以vml开头的文件包括:“
-rwxr-xr-x. 1 root root 5.7M 9月   7 16:55 vmlinuz-0-rescue-99cd71752ccc4ea6ba5223666b42918b
-rwxr-xr-x. 1 root root 5.7M 8月  23 2017 vmlinuz-3.10.0-693.el7.x86_64

6,重定向与管道

(1)交互式硬件设备
  • 标准输入: 从该设备接收用户输入的数据
  • 标准输出 : 通过该设备向用户输出数据
  • 标准错误 :通过该设备报告执行出错信息
类型设备文件文件描述编号默认设备
标准输入/dev/stdin0键盘
标准输出/dev/stdout1显示器
标准错误输出/dev/stderr2显示器
(2)重定向操作
类型操作符用途
重定向输入<从指定的文件读取数据,而不是从键盘输入
重定向输出>将输出结果保存到指定的文件(覆盖原有内容)
重定向输出>>将输出结果追加到指定的文件尾部
标准错误输出2>将错误信息保存到指定的文件(覆盖原有内容)
标准错误输出2>>将错误信息追加到指定的文件中
混合输出&>将标准输出,标准错误的内容保存到同一个文件中
(3)关于错误重定向?

错误重定向指的是将执行命令过程中出现的错误信息(如选项或参数错误等)保存到指定的文件,而不是直接显示在屏幕上,错误重定向使用“2>”操作符,其中“2”是指错误文件的编号(在使用标准输出,标准输入重定向时,实际上省略了1,0编号)
在实际应用中,错误重定向可用来收集程序执行的错误信息,为拍错提供依据;对于shell脚本,还可以将无关紧要的错误信息重定向到空文件/dev/null 中,以保持脚本输出的简洁。将一些重要的执行程序的错误重定向到某个文件中。
使用“2>”操作符时,会像使用“>”操作符一样覆盖目标文件的内容,若要追加内容而不是覆盖文件,则应改用“2>>”操作符。也可以使用“&>”操作符将正确和错误两类输出信息信息保存到同一个文件。

(4) 管道操作符号“|”
将左侧的命令输出结果,作为右侧命令的处理对象
  • 格式:cmd1 | cmd2 【… | cmdn】
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iP8rkr1G-1604968241637)(en-resource://database/865:1)]

二,shell脚本变量

变量的作用
用来存放系统和用户需要使用的特定参数(值)
  • 变量名:使用固定的名称,由系统预设或用户定义

  • 变量值 : 能够根据用户设置,系统环境的变化而变化

变量的类型
  • 自定义变量:由用户自己定义,修改和使用
  • 特殊变量:环境变量,只读变量,位置变量,预定义变量

1,自定义变量

定义一个新的变量
  • 变量名以字母或下划线开头,区分大小写,建议全大写
    格式: 变量名=变量值
查看变量的值

echo $变量名
例如:

[root@server2 ~]# Product=Python
[root@server2 ~]# Version=2.7.13
[root@server2 ~]# echo $Product
Python
[root@server2 ~]# echo $Product $Version
Python 2.7.13
[root@server2 ~]# 

赋值时使用引号
  • 双引号:允许通过$符号引用其他变量值
  • 单引号:禁止引用其他变量值,$视为普通字符
  • 反撇号: 命令替换,提取命令执行后的输出结果
从键盘输入内容为变量赋值

read [-p “提示信息"] 变量名

整数变量的运算

expr 变量1 运算符 变量2 [运算符 变量3]…

常用运算符
  • 加法运算: +
  • 减法运算: -
  • 乘法运算: *
  • 除法运算: /
  • 求模(取余)运算:%

2,特殊变量

环境变量
  • 由系统提前创建,用来设置用户的工作环境
  • 配置文件: /etc/profile, ~/.bash_profile
常见环境变量
  • PWD, PATH
  • USER , SHELL, HOME
[root@server3 ~]# echo $PATH
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/root/bin
[root@server3 ~]# PATH="$PATH:/root"
[root@server3 ~]# echo $PATH
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/root/bin:/root
[root@server3 ~]# 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值