论Shell编程规范与变量

目录

一:shell脚本

1.shell概述

2.linux中包含的常用shell

3.shell脚本概述

4.shell脚本应用场景

5.shell脚本的作用

6.用户的登录shell

二: 编写脚本

1.脚本的基本格式

 2.shell脚本的执行

3. 交互式硬件设备

4.重定向操作

5.管道操作符号 “|”

 三:shell变量

1.变量的作用

2.变量的类型

3.定义新变量

4.赋值时使用引号

 5. 从键盘输入内容为变量赋值

 6.设置全局变量

7.整数变量

 8.环境变量

 9.只读变量

10.位置变量

​11.预定义变量

总结:


一:shell脚本

1.shell概述

shell是一个命令解释器,它是介于系统内核与用户之间,负责解释命令行,把用户的输入解释给操作系统,并处理各种各样的操作系统的输出结果,输出到屏幕反馈给用户。这种对话方式可是交互也可以是非交互式的。

2.linux中包含的常用shell

(1)bash:基准于GNU的框架下发展出的shell

(2)csh:语法有点类似于c语言的shell

(3)tcsh:整合了csh,提供更多的功能

(4)sh:已经被bash所替换

(5)nologin:奇怪的shell,这个shell可以让用户无法登录主机

(6)bash(/bin/bash):是目前大多数linux版本采用的默认的shell

3.shell脚本概述

 shell脚本(shell script)就是将要执行的命令按顺序保存到一个文本文件并给该文件可执行权限,方便一次性执行的一个程序文件。主要是方便管理员进行设置或管理,可结合各种shell控制语句以完成更复杂的操作。常用于重复性操作、批量事物处理、自动化运维、服务运行状态监控、定时任务执行等。

4.shell脚本应用场景

(1)重复性操作

(2)交互性任务

(3)批量事务处理

(4)服务运行状态监控

(5)定时任务执行

5.shell脚本的作用

(1)自动化运维

(2)批量化重复操作可以编写脚本结合计划任务自动周期运行

(3)减轻管理员工作量

(4)提高处理文件文本的速度

(5)避免配置出错

6.用户的登录shell

登录后默认使用的shell程序,一般为/bin/bash,不同shell的内部指令、运行环境等会有所区别。

[root@localhost ~]# cat /etc/shells

二: 编写脚本

1.脚本的基本格式

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

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

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

 2.shell脚本的执行

(1)方法一:指定路径的命令,要求文件必须有 x 权限

chmod +x /root/first.sh
指定绝对路径:/root/first.sh
指定相对路径:./first.sh

注:系统会自动创建一个子shell环境去运行,但是当前shell环境不会受到影响。

(2)方法二:通过bash、sh命令执行

[root@localhost opt]# bash first.sh

[root@localhost opt]# sh first.sh

注:系统会自动创建一个子shell环境去运行,但是当前shell环境不会受到影响。 

(3)方法三:通过source命令执行

[root@localhost opt]# source first.sh
[root@localhost opt]# . first.sh


注:执行 source、“.”命令时,脚本在当前shell环境运行,会受到影响,切换目录

3. 交互式硬件设备

类型

设备文件

文件描述编号

默认设备

标准输入

/dev/stdin

0

键盘

标准输出

/dev/stdout

1

显示器

标准错误输出

/dev/stderr

2

显示器

(1)标准输入:从该设备接收用户输入的数据

(2)标准输出:通过该设备向用户输出数据

(3)标准错误:通过该设备报告执行出错信息

4.重定向操作

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

(1)重定向输入

 (2)重定向输出

(3)标准错误输出

(4)混合输出

(5)混合输出 2>&1

2指向1,2的错误信息和1一起指向指定的文间 

5.管道操作符号 “|”

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

 三:shell变量

1.变量的作用

用来存放系统和用户需要使用的特定参数(值)

变量名:使用固定的名称,由系统预设或用户定义

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

2.变量的类型

自定义变量:由用户自己定义、修改和使用

特殊变量:环境变量、只读变量、位置变量、预定义变量

3.定义新变量

变量名以字母或下划线开头,区分大小写,建议全大写

变量名=变量值  #定义一个新的变量  例:a=1
echo $变量名  #查看变量的值 例:echo $a

4.赋值时使用引号

双引号:允许通过$符号引用其他变量值

单引号:禁止引用其他变量值,$视为普通字符

反撇号:命令替换,提取命令执行后的输出结果

 

5. 从键盘输入内容为变量赋值

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

 

 

 

 6.设置全局变量

(1)临时全局变量

设置临时全局变量后,重启后变量就没了

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

 (2)永久全局变量

设置永久全局变量后,重启后变量依旧在

7.整数变量

expr 变量1 运算符 变量2 [运算符 变量3]...
echo $((变量1 + 变量2))
echo $[变量1 + 变量2]
let i++
let ++i

 常用运算符:

加法运算:+

减法运算:-

乘法运算:\*

除法运算:/

求模(取余)运算:%

 

 8.环境变量

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

常见的环境变量:

  1. PATH:指定可执行程序的搜索路径。
  2. HOME:指定当前用户的家目录。
  3. LANG:指定当前系统的语言环境。
  4. SHELL:指定当前Shell的路径。
  5. PS1:指定Shell提示符的格式。
  6. PWD:指定当前工作目录。
  7. TERM:指定当前终端的类型。
  8. USER:指定当前用户的用户名

 将opt目录下的文件加入到变量中,其中可执行文件在全局中直接使用,无需调用。

也可创建软链接 进行环境变量配置 

 

 9.只读变量

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

10.位置变量

 

想要有10以上的数,需在变量两边加上{} 

 11.预定义变量

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

 

总结:

 Shell脚本的内容构成:环境声明、注释文字、执行语句
重定向包括重定向输入、重定向输出、错误重定向
定义或赋值变量时,采用“变量名=变量值”的格式
赋值操作还可以使用单引号、双引号、反撇号、read命令等方式
查看或引用变量的值时,采用“$变量名”的格式
常见的特殊变量包括环境变量、只读变量、位置变量、预定义变量
 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值