摘要:在日常工作中或多或少都会接触到shell脚本,可以说会shell脚本是一位后端维护及开发的基本功。shell是一种编程语言,而学习一门编程语言语法,最基本的无外乎就是语言中的数据类型定义,for循环以及if else条件判断语句等。
本文主要介绍shell语言的基本语法,详细内容请参考下文。
一、LINUX环境介绍
1、登陆linux系统
2、查看默认shell
二、SHELL变量介绍
说明:shell中对变量的定义,可以分为环境变量和局部变量。
1、环境变量
说明:环境变量在子shell进程中是可见的,可以通过export 关键字进行定义。
需要注意的是,在 Linux 系统中,除了 export 之外,env、set 和 declare 这三个命令也可以显示 Shell 中的变量。但这四个命令是有不同的,差别如下:
执行指令# export查看已定义的环境变量;
同时也可以执行指令# export VAR=value定义新的环境变量。
2、局部变量
说明:局部变量是指在某个shell中生效的变量,这个变量在其他shell中是无效。
3、定义变量
说明:变量的定义可以通过如下方式进行定义,变量名=变量值。
执行指令# name=jason
备注:变量的定义需要注意两点,一是变量名和变量值之间用等号紧紧相连,之间没有任何空格。二是当变量中有空格时必须用引号(单引号,双引号都可以)括起,否则会出现错误。
4、引用变量
说明:一般情况下,定义了变量,可以通过在变量前面加上$符号进行引用。建议用更为标准点的写法,是用${}将变量名括起来。比如:
三、SHELL位置参数
说明:除了通过${变量名} 方式引用变量,还可以通过 $数字 的方式获取shell脚本的参数,$1代表第一个参数,$2代表第二个参数,依次类推。另外 $# 代表参数的个数,$* 或者 $@代表所有参数。
比如写一个脚本输出这些变量。
编写的脚本内容如下
执行指令# sh parameter.sh zhangsan lisi wangwu
备注:注意下shell脚本中单引号和双引号的区别,如果要让输出的语句中引用变量,那么要用双引号。
四、SHELL数组语法
说明:在shell脚本中还有个经常用到的数组,与其他语言不同的是,shell脚本中的数据只支持一维数组。数组的定义方式如下,declare 关键字定义数组,其中元素用()括起来,并且元素之间用空格隔开。
1、定义数组
declare arr1=(元素1 元素2),declare可省略。
2、引用数组
echo ${数组名[索引号]}
例子:
echo ${数组名[0]} 含义:获取数组内第一个元素的值(即下标是0的元素值)
echo ${数组名[5]} 含义:获取数组内第六个元素的值(即下标是5的元素值)
3、获取数组的长度
echo ${#数组名[*]} 或者 echo ${#数组名[@]}
4、数组元素的切片
${数组名[@]:起始位置:截取长度} 起始位置从0下标算起
${数组名[@]} 获取整个数组的元素值
例子:
${数组名[@]:0:3}从下标为0的元素值开始截取,总共截取3个元素
${数组名[@]:1:2}从下标为1的元素值开始截取,总共截取2个元素
五、SHELL循环语法
For循环语句语法结构
for variable in (list)
do
command
done
说明:for语句可以遍历一个列表然后对其中每一个元素进行遍历。上述语法中,list既可以是变量也可以是固定数组表达式,也可以命令输出。
执行指令# sh for.sh
六、SHELL条件语法
If条件语句语法结构
if expression; then
command
fi
通过if then fi三个关键字组成了最简单的if语句,其中expression则是前面讲到的判断语句的表达式。
比如:
执行指令# sh if.sh
备注:expression表达式,在shell中可以通过$? 获取上一个shell语句的执行结果,shell命令中规定0才是命令正确执行后的返回结果,其余结果都是不正确的。
让表达式执行比较逻辑的方式有两种,
第一种是通过test expression 的方式,test后面跟表达式,如下所示,比较了两个数字是否相等,返回0说明相等。
第二种方式是使用[] 把表达式括起来,这种方式注意[] 内变量需要与括号相隔一个空格才行。