Shell编程规范与变量

本文介绍了Shell脚本的基础知识,包括Shell的作用作为命令解释器,如何编写第一个Shell脚本,重定向与管道操作的原理,以及Shell变量的类型和应用。通过学习,读者将能够掌握Shell编程的基本技能。

1.Shell脚本概述

Shell脚本的概念
	将执行的命令按顺序保存到一个文本文件
	给该文件可执行权限
	可结合各种Shell空值语句已完成更复杂的操作
Shell脚本应用场景
	重复性操作
	交互性任务
	批量事务处理
	服务运行状态监控
	定时任务执行
什么是“shell脚本”呢?
	简单的说,只要将平时使用的各种Linux命令按顺序保存到一个文本文件中,然后添加可执行权限,这个文件就是一个shell脚本

2.Shell的作用

Shell的作用——命令解释器,“翻译官”

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

在这里插入图片描述

用户的登录Shell

​ 登录后默认使用的Shell程序,一般为/bin/bash

​ 不同Shell的内部指令,运行环境等会有所区别

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

3.编写第一个Shell脚本

1.编写脚本代码

​ 使用vim文本编辑器

​ 每行一条Linux命令,按执行顺序依次编写

[root@server ~]# vim first.sh
cd /boot
pwd
ls -lh vml*

2.执行脚本文件

方法一:脚本文件路径(绝对路径与相对路径)
	./first.sh			#必须有x权限
方法二:sh脚本文件路径		不需要x权限
	sh first.sh
方法三:source 脚本文件路径		会切入到自动脚本中的环境	不需要x权限
	source first.sh

3.更完善的脚本构成

脚本声明
注释信息
可执行语句
[root@server ~]# vim first.sh
#!/bin/bash
# This is my first.sh
cd /boot
echo "当前的目录位于:"
pwd
echo "其中以vml开头的文件包括:"
ls -lh vml*

4.重定向与管道操作

1.交互式硬件设备

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

​ 标准输出:通过该设备向用户输出数据

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

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

标准输入,标准输出和标准错误默认使用键盘和显示器作为关联的设备,与操作系统进行交互,完成最基本的输入,输出操作,即从键盘接收用户输入的各种命令字串,辅助空值信息,并将命令结果输出到屏幕上;如果命令执行出错,也会将错误信息反馈到屏幕上。

2.重定向操作

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

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

3.管道操作符号"|"

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

cmd1 | cmd2 |[...| cmdn]

5.Shell变量的作用,类型

变量的作用
	用来存放系统和用户需要使用的特定参数(值)
	变量名:使用固定的名称,由系统预设或用户定义
	变量值:能够根据用户设置,系统环境的变化而变化
变量的类型
	自定义变量:由用户自己定义,修改和使用
	特殊变量:环境变量,只读变量,位置变量,预定义变量

6.自定义变量

定义一个新的变量
	变量名以字母或下划线开头,区分大小写,建议全大写
	变量名=变量值
查看变量的值
	echo $变量名
可以输入单个,也可以多个
[root@server ~]# echo $Product $Version
Python 1.1.1
赋值时使用引号
	双引号:允许通过$符号引用其他变量值
	单引号:禁止引用其他变量值,$是为普通字符
	反撇号:命令替换,提取命令执行后的输出结果
从键盘输入内容为变量赋值
	read [-p "提示信息"] 变量名
设置变量的作用范围
	格式1:export 变量名...
	格式2:export 变量名=变量值...
	
[root@server ~]# export Product Version		导出为全局变量
[root@server ~]# bash
[root@server ~]# echo $Product $Version
Python 1.1.1
整数变量的运算
	expr 变量1 运算符 变量2 [运算符 变量3]...
常用运算符
	加法运算:+
	减法运算:—
	乘法运算:\*
	除法运算:/
	求模取余运算:%

7.特殊的Shell变量

1.环境变量
	由系统提取创建,用来设置用户的工作环境
	配置文件:/etc/profile,~/.bash_profile
常见的环境变量
	PWD,PATH
	USER,SHELL,HOME

[root@server ~]# echo $PATH
/usr/local/mysql/bin:/usr/local/mysql/lib:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@server ~]# PATH="$PATH:/root"
[root@server ~]# echo $PATH
/usr/local/mysql/bin:/usr/local/mysql/lib:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/root
2.只读变量
Shell变量中一种特殊情况,一经设定,其值是不可改变的,这种变量被称为只读变量。
[root@server1 ~]# name=cloud
[root@server1 ~]# readonly name		#设置为只读变量
[root@server1 ~]# echo $name
cloud
[root@server1 ~]# name=yun			#不可重新赋值
-bash: name: 只读变量
[root@server1 ~]# unset name		#不可删除
-bash: unset: name: 无法反设定: 只读 variable
注:只读变量的改变是不可逆的,一经只读,无法挽回。
3、位置变量(也称为位置参数,使用$1,$2,$3...$9表示)
当执行命令行操作时,第一个字段表示命令名或脚本程序名,其余的字符串参数安装从左到右的书序依次赋值给位置变量。

[root@server1 ~]# vim adder2num.sh
#!/bin/bash
SUM=`expr $1 + $2`
echo "$1 + $2 =$SUM"
[root@server1 ~]# chmod +x adder2num.sh
[root@server1 ~]# ./adder2num.sh 12 34
12 + 34 =46
4、预定义变量
$#:表示命令行中位置参数的个数
$*:表示所有位置参数的内容
$?:表示前一条命令执行后的返回状态,为0即正确,任何非0即出现异常
$0:表示当前执行的脚本或程序的名称
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值