Shell脚本编程规范及变量

目录

引言

一、Shell脚本概述

1、什么是Shell

2、Shell的作用

3、Shell脚本的概念

2.1 shell脚本是什么

2.2 shell脚本能干什么

4、Shell脚本应用场景

二、Shell编程规范

1、创建Shell 程序的步骤

2、Shell脚本的构成

2.1 编写脚本代码

2.2 赋予可执行权限

2.3 脚本的构成

3、执行脚本的方法

3.1 脚本文件路径(绝对路径与相对路径)

3.2 sh 脚本文件路径

3.3 source脚本文件路径

3.4 其他方法三、重定向与管道操作

1、交互式硬件设备2、重定向操作

2.1 重定向操作

2.2 错误重定向

3、管道操作

四、Shell变量的作用、类型1、变量的作用

2、变量的类型

3、自定义变量

3.1 引用变量

3.2 赋值时使用引号

3.3 交互式定义变量(read)

3.4 设置变量的作用范围(export)

3.5 数值变量的运算

3.5.1 expr命令

3.5.2 let命令

3.5.2 bc命令

五、特殊的Shell变量

1、环境变量

2、只读变量

3、位置变量

4、预定义变量

六、总结


前言


在Linux维护工作中,我们常使用脚本来替我们解决大量重复的且枯燥无味的操作,而Shell脚本就是我们最常使用也相对易掌握的脚本语言。

一、Shell脚本概述
(1)什么是Shell    

Linux系统中运行的一种特殊程序
在用户和内核之间之间充当“翻译官”
用户登陆Linux系统时,自动加载一个Shell程序
Bash是Linux系统中默认使用的Shell程序
用户与内核交互过程:
计算机接收用户所输入的的命令
shell会将所接收到的命令转换成计算机所能识别的二进制语言
再将命令传递给系统内核执行
内核:用于调用计算机硬件资源
shell:将用户指令转换成计算机语言让内核去调用计算机硬件资源
bash是一个文件,linux系统中万物皆文件
bash文件位于/bin/bash

(2)Shell脚本的基本概念

将要执行的命令按顺序保存到一个文本文件;

给该文件可执行权限;

可结合各种Shell控制语句以完成更复杂的操作。

(3)Shell脚本作用

重复性操作

交互性任务

批量事务处理

服务运行状态监控

定时任务执行
 

Shell中有哪些Shell

[root@localhost data]#cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/bin/tcsh
/bin/csh

二、Shell编程规范

(1)创建Shell脚本程序步骤

1.创建一个包含命令和控制结构的文件。
2.编辑完之后修改这个文件的权限使它可以执行 #使用chmod +x 文件名
3.检测语法错误(命令集合是否正确) #set -x 追踪脚本是否有故障
4.执行脚本./text.sh

(2)脚本构成


⚫了的脚本申明(解释器) :若第一行为“!/bin/bash",表示此行以下的代码语句是通过/bin/bash程序  来解释执行,#!/bin/bash为默认解释器。还有其它类型的解释器,比如# !/usr/bin/python. #! /usr/bin/expect.

⚫注释信息:以“#"开头的语句表示为注释信息,被注释的语句在运行脚本时不会被执行。

⚫可执行语句:比如echo命令,用于输出”"之间的字符串

⚫如果想要把文本字符串和命令输出显示在同一行中,可以使用echo语句的 -n 参数。

 (3)Shell脚本执行方式

⚫第一种方法脚本文件路径执行,必须有执行权限

[root@laj home]# chmod +x shili.sh

 

⚫第二种方法,使用脚本解释器执行

三、重定向与管道符号
(1)交互式硬件设备


标准输入:从该设备接收用户输入的数据
标准输出:通过该设备向用户输出数据
标准错误:通过该设备报告执行出错信息

类型设备文件文件描述编号默认设备
标准输入/dev/stdin0键盘
标准输出/dev/stdout1显示器
标准错误输出/dev/stderr2显示器

(2)重定向操作

类型操作符用途
重定向输入<从指定文件读取数据,而不是从键盘输入
重定向输出>将输出结果保存到指定文件(覆盖原有内容)
重定向追加输出>>将标准输出追加到指定的文件的尾部,不覆盖原有内容
标准错误输出2>将错误信息保存到指定文件,并且覆盖原有文件
标准错误追加输出2>>将错误信息追加到指定文件的尾部,不覆盖原有内容
混合输出&>和2>$1将标准输出,标准错误保存到同—文件中

 (3)管道符号

  • 管道操作符:“|”: 将管道符号“|"左侧的命令输出的结果,作为右侧命令的输入(处理对象),同一行命令中可以使用多个管道

 

四、Shell变量的作用

(1)变量的作用

  • 用来存放系统和用户需要使用的特定参数(值)
  • 变量名:使用固定的名称,由系统预设或用户定义
  • 变量值:能够根据用户设置、系统环境的变化而变化

(2)变量类型

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

五、自定义变量

(1)定义新的变量

格式:变量名=变量值
#示例:
[root@localhost ~]#abc=123

 (2)查看定义的变量的值

格式echo $变量名
#示例:
[root@localhost ~]#echo $abc
123

(3)赋值时,使用引号

  • 双引号:允许通过$符号引用其他变量值
  • 单引号:禁止引用其他变量值, $视为普通字符
  • 反撇号:命令替换,提取命令执行后的输出结果,``和$(…)作用相同

 (4)从键盘输入内容为变量赋值

是从read获取输入内容

▪ -p:提示用户的信息
-n:定义字符数
-s:不显示用户输入的内容,常用于输入密码read -s -p “input your password:” pass
-t:定义超时时间,超过多长时间没输自动退出从文件读取内容赋值给变量(默认10s)

▪ 方法一

 ▪ 方法二

vim  name.sh

 

 (5)export命令

为了使用户定义的变量在所有的子 shell环境中能够继续使用,减少重复设置工作,可以通过内部命令export将指定的变量导出为全局变量。用户可以同时指定多个变量名称作为参数(无须使用"$"符号),变量名之间以空格分隔

格式1:export 变量名
格式2:export 变量名=变量值

 (6)整数的运算

在 Bash shell环境中,只能进行简单的整数运算,不支持小数运算,整数值的运算主要通过内部命令expr进行。运算符与变量之间必须有至少一个空格。

运算内容:加(+)、减(-)、乘(*)、除(/)、取余(%)

运算符号:( ( ) ) 和 (( ))和(())和[]

运算命令: expr和let

运算工具: bc(系统自带)

①expr命令

+ :加法运算。

- :版法运算。

\* :乘法运算,注意不能仅使用 * 符号,否则将被当成文件通配符。

/:除法运算。

%:求模运算,又称为取余运算,用来计算数值相除后的余数。

 

 ②let命令

let的运算可以改变变量本身的值,但不显示结果,需要echo,其他的运算方式可以做运算但不改变变量本身的值。

let n++        #n自加1
let n--        #n自减1

[a++]      #先输出再自增1
[++a]      #先自增1再输出

 ③bc命令

使用bc进行运算,支持小数运算,但在脚本中不可直接使用否则会进入交互界面,可以用echo结合管道使用

 六、特殊的Shell变量

(1)环境变量

由系统提前创建,用来设置用户的工作环境
配置文件:/etc/profile(全局生效)、~/.bash_profile(当前用户环境)

(2)常见的环境变量

 ②PATH(路径环境变量)

echo $PATH          #查看当前搜索路径
PATH="$PATH:/root"      #将/root目录添加到搜索路径
export PATH="$PATH:/root" #输出为全局环境变量

 已经将该目录添加到路径环境变量中,目录内的所有具有执行权限的文件,都可以在当前环境任何目录中执行

③只读变量

用于变量值不允许被修改的情况

readonly 命令设置只读变量
readonly PRODUCT        #设置为只读变量
echo $PRODUCT
PRODUCT=Python              #只读变量不可以被重新赋值
unset PRODUCT         #只读变量不可以被删除,unset 命令用于删除变量,但无法删除只读变量,只能重启系统解决

④位置变量

  • 当执行命令行操作时,第一个字段表示命令名或脚本程序名,其余的字符串参数按照从左到右的顺序依次赋值给位置变量。

  • $n:n为数字,$0代表命令本身,1~9代表第一个到第九个参数,十以上的参数需要使用大括号表示,比如第十个参数为 ${10}

 ⑤预定义变量

    预定义变量是由Bash程序预先定义好的一类特殊变量,用户只能使用预定义变量,而不能创建新的预定义变量,也不能直接为预定义变量赋值。预定义变量使用*$"符号和另一个符号组合表示

$#:  表示命令行中位置参数的个数。
$*:  表示所有位置参数的内容,这些内容当做一个整体
$@: 表示列出所有位置参数,但是是以单个的形式的列出
$?: 表示前一条命令执行后的返回状态,返回值为О表示执行正确,返回任何非О值均表示执行出现异常。
$0:表示当前执行的脚本或程序的名称
$$:表示返回当前进程的进程号
$ !:返回最后一个后合进程的进程号

 总结

  • shell的作用与应用场景
  • shell脚本的编写规范与执行方式
  • 重定向与管道符号的作用与使用方式
  • 单引号、双引号、反撇号的 使用方法
  • 数值变量的常用运算符
  • 环境变量、只读变量、位置变量、预定义变量的用途
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值