Shell编程过程中的使用规范与变量

一、shell脚本概述

 shell脚本的概念:

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

给该文件可执行权限

可结合各自shell控制语句以完成更复杂的操作

 

 shell脚本应用场景

重复性操作

交互性任务

批量事务处理

脚本运行状态监测

定时任务执行

简单来说,将平时使用的各种linux命令按顺序保存到一个文本文件,添加可执行权限,从而完成更复杂的操作,

就是shell脚本。

 

shell的作用:命令解释器,“翻译官”

介于系统内核与用户之间,负责解释命令行

用户的登录shell

默认使用的shell程序,一般为/bin/bash

 

二、编写一个shell脚本

 编写脚本代码:

使用vim文本编辑器(vim能检查语法结构,编写是否存在问题)

每一条linux命令,按执行顺序编写

赋予可执行权限:使脚本具有可执行属性

chmod +x [文件名]

执行方法

 方法一:sh 脚本文件路径  (不需要执行权限)

 方法二:./脚本文件路径     (需要执行权限来操作)

 方法三:source 脚本文件路径   (也不需要执行权限)

实验案例

 

 

 

更完善的脚本构成包括

脚本声明  #!/bin/bash

注释信息  # 注释信息

可执行语句

 

三、重定向

标准输入(STDIN):默认的设备是键盘,文件编号为0,命令将从标准输入文件中读取在执行过程需要的输入数据。

标准输出(STDOUT):默认的设备是显示器,文件编号为1,命令将执行后的输出结果发送到标准输出文件。

标准错误(STDERR):默认设备是显示器,文件编号为2,命令将执行期间的各种错误信息发送到标准错误文件。

标准输入、标准输出和标准错误默认使用键盘和显示器作为关联的设备,与操作系统进行交互,完成最基本的输入、输出操作,

即从键盘接收用户输入的各种命令字串、辅助控制信息,并将命令结果输出到屏幕上;如果命令执行出错,也会将错误信息反馈到屏幕上。

在实际的Linux系统维护中,可以改变输入、输出内容的方向,而不适用默认的标准输入、输出设备(键盘和显示器),这种操作称为重定向。

 

重定向操作

 

重定向输入例子:

vi pass.txt

useradd lisi

passwd --stdin lisi < pass.txt      #更改用户lisi的密码

 

 

管道操作符号 “|”

 将左侧的命令输出结果,作为右侧命令的处理对象。

 

 

四、自定义变量

当变量名称后面紧跟其他字符相混淆时,需添加“{  }”将其括起来。

echo ${product}2.5

变量赋值的特殊操作:

 

设置变量的作用范围

默认情况下,新定义的变量只在当前的shell环境中有效,因此成为局部变量。当进入子程序或新的子shell环境时,

局部变量将无法再使用。为了使用户定义的变量在所有子shell环境中能够继续,可以通过export将指定变量导出为全局变量。

 

数值变量的计算

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

 

关于嵌套exp的语法:

 T=`expr $( expr $X + $Y ) $X `

 

特殊的shell变量

1.环境变量

由系统提前创建,用来设置用户的工作环境

配置文件:/etc/profile 、~/.bash_profile

常见的环境变量:

PWD、PATH

USER、SHELL、HOME

 

2、只读变量

Shell变量中一种特殊情况,一经设定,其值是不可改变的,这种变量被称为只读变量。

 

注:只读变量的改变是不可逆的,一经只读,无法挽回。

 

3、位置变量(也称为位置参数,使用$1,$2,$3...$9表示)

当执行命令行操作时,第一个字段表示命令名或脚本程序名,其余的字符串参数安装从左

到右的书序依次赋值给位置变量。

 

4、预定义变量

$#:表示命令行中位置参数的个数

$*:表示所有位置参数的内容

$?:表示前一条命令执行后的返回状态,为0即正确,任何非0即出现异常

$0:表示当前执行的脚本或程序的名称

 

原文地址:https://www.cnblogs.com/xuhao0705/p/13762720.html