Linux系统Shell脚本语言之循环及判断语句

摘要:在日常工作中或多或少都会接触到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说明相等。

第二种方式是使用[] 把表达式括起来,这种方式注意[] 内变量需要与括号相隔一个空格才行。

原文链接:,转发请注明来源!