三十八、SHELL编程

本文详细介绍了SHELL编程的基础知识,包括SHELL的定义、常见解释器,以及变量的使用。接着讲解了条件流程控制语句如If、For、While和Case,并介绍了Read命令的不同用法。此外,文章还探讨了Shell的四大经典工具——Find、SED、AWK和GREP的功能、参数和实例。最后,简要提及了Shell中一维数组的定义和操作。
摘要由CSDN通过智能技术生成

1、介绍

SHELL是基于C语言开发的软件程序,默认是置于Linux内核的外层,Linux系统启动之后,会在Linux内核外层,装载一层外壳,这个外壳称为SHELL。SHELL外壳程序是位于用户使用者和Linux内核之间的,主要是用于接收用户输入的指令,并且解析命令,最终将解析之后的指令发给Linux内核,Linux内核处理完成之后,会将处理的结果返回给SHELL,SHELL会对Linux内核返回数据做解释(翻译),最终将翻译之后的信息返回给用户。Linux操作系统启动之后,使用用户和密码登录,默认会登录到SHELL终端上,用户所有的操作都是在SHELL终端来执行。
常见SHELL解释器软件有以下几种:
Bourne Shell(/usr/bin/sh或/bin/sh)
Bourne Again Shell(/bin/bash)
C Shell(/usr/bin/csh)
K Shell(/usr/bin/ksh)
Shell for Root(/sbin/sh)

2、变量

Shell编程是非类型的解释型语言,不像C++、JAVA语言编程时需要事先声明变量。Shell给一个变量赋值,实际上就是定义了变量。在Linux支持的所有shell中,都可以用赋值符号(=)为变量赋值。Shell变量为弱类型,定义变量不需要声明类型,但在使用时需要明确变量的类型。可以使用Declare指定类型,Declare常见参数有:

+/-  "-"可用来指定变量的属性,"+"为取消变量所设的属性
-f  仅显示函数
r  将变量设置为只读
x  指定的变量会成为环境变量,可供shell以外的程序来使用
i  指定类型为数值,字符串或运算式

Shell编程中变量分为三种,分别是系统变量、环境变量和用户变量。其中系统变量在对参数判断和命令返回值判断时使用,而环境变量则主要是在程序运行时需要设置,用户变量又称为局部变量,多使用在Shell脚本内部或者临时局部使用。Shell变量名在定义时,首个字符必须为字母(a-z,A-Z),不能以数字开头,中间不能有空格,可以使用下划线(_),不能使用(-),也不能使用标点符号等。变量定义好之后,可以在前面加上$进行变量引用。

SHELL编程常见系统变量:

$0 							   当前脚本的名称
$n 							   当前脚本的第n个参数,n=1,2,…9
$* 							   当前脚本的所有参数(不包括程序本身)
$# 							   当前脚本的参数个数(不包括程序本身)
$? 							   命令或程序执行完后的状态,返回0表示执行成功
$$ 							   程序本身的PID号

SHELL编程常见环境变量:

PATH  							命令所示路径,以冒号为分割
HOME  						打印用户家目录
SHELL 						显示当前Shell类型
USER  						打印当前用户名
ID    							打印当前用户id信息
PWD   							显示当前所在路径
TERM  						打印当前终端类型
HOSTNAME      			显示当前主机名

3、条件流程控制语句

3.1 If条件判断语句

通常以if开头,fi结尾。也可加入else或者elif进行多条件的判断,if表达式如下:

if  (表达式) 
语句1
fi

If常见判断逻辑运算符:

-f	 					判断文件是否存在 eg: if [ -f filename ]
-d	 					判断目录是否存在 eg: if [ -d dir     ]
-eq						等于,应用于数字比较 equal
-ne						不等于,应用于数字比较 not equal
-lt						小于,应用于整型比较 letter
-gt						大于,应用于整型比较 greater
-le						小于或等于,应用于整型比较
-ge 					大于或等于,应用于整型比较
-a						双方都成立(and) 逻辑表达式 –a 逻辑表达式
-o						单方成立(or) 逻辑表达式 –o 逻辑表达式
-z						空字符串
||      				单方成立
&&      				双方都成立表达式
==					相等,应用于字符串比较

If判断括号区别:

(  )   用于多个命令组、命令替换、初始化数组;
(( ))  整数扩展、运算符、重定义变量值,算术运算比较;
[]  bash内部命令,[与test是等同的,正则字符范围、引用数组元素编号,不支持+-*/数学运算符,逻辑测试使用-a、-o。
[[ ]] bash程序语言的关键字,不是一个命令,[[ ]]结构比[ ]结构更加通用,不支持+-*/数学运算符,逻辑测试使用&&、||。
{}  主要用于命令集合或者范围,例如mkdir  -p  /data/201{7,8}/

3.2 for循环语句

for循环语句主要用于对某个数据域进行循环读取、对文件进行遍历,通常用于需要循环某个文件或者列表。其语法格式以for…do开头,done结尾。语法格式如下:

For  var  in  (表达式)
do
	语句1
done

3.3 While循环语句

While循环语句与for循环功能类似,主要用于对某个数据域进行循环读取、对文件进行遍历,通常用于需要循环某个文件或者列表,满足循环条件会一直循环,不满足则退出循环,其语法格式以while…do开头,done结尾。语法格式如下:

while  (表达式)
do
语句1
done

3.4 Case选择语句

Case选择语句,主要用于对多个选择条件进行匹配输出,与if elif语句结构类似,通常用于脚本传递输入参数,打印出输出结果及内容,其语法格式以Case…in开头,esac结尾。语法格式如下:

case  $1  in  
    Pattern1)
    语句1 
    ;;  
    Pattern2)
    语句2
    ;;  
    Pattern3)
    语句3
    ;;  
esac

3.5 Select选择语句

Select语句一般用于选择,常用于选择菜单的创建,可以配合PS3来做打印菜单的输出信息,其语法格式以select…in do开头,done结尾。语法格式如下:

select  I  in (表达式) 
do
语句
done

#注:传参需在执行脚本时添加  不能在选择时添加

3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值