一、变量

变量命名须遵循如下规则:

命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。

中间不能有空格,可以使用下划线(_)。

不能使用标点符号。

不能使用bash里的关键字(可用help命令查看保留关键字)。

 

使用变量:

使用一个定义过的变量,只要在变量名前面加美元符号即可,如:$name

 

只读变量:

使用 readonly 命令可以将变量定义为只读变量,只读变量的值不能被改变。

 

用法如下:

#!/bin/bash

myUrl="http://www.google.com"

readonly myUrl

 

删除变量:

使用 unset s令可以删除变量。(unset 命令不能删除只读变量)

 

语法:

unset variable_name

 

变量类型:

运行shell时,会同时存在三种变量:

1) 局部变量 局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量。

2) 环境变量 所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。必要的时候shell脚本也可以定义环境变量。

3) shell变量 shell变量是由shell程序设置的特殊变量。shell变量中有一部分是环境变量,有一部分是局部变量,这些变量保证了shell的正常运行。

 

二、字符串

 

拼接字符串:

greeting_1="hello, ${your_name} !"

 

获取字符串长度

ss="abcd"

echo ${#ss} #输出 4

 

三、Shell 数组

定义数组

在 Shell 中,用括号来表示数组,数组元素用"空格"符号分割开。定义数组的一般形式为:

 

数组名=(2 ... n)

 

如:student=(value0 value1 value2 value3)

或者:

student=(

value0

value1

value2

value3

)

 

读取数组

读取数组元素值的一般格式是:

valuen=${student[n]}

使用 符号可以获取数组中的所有元素,例如:

echo ${array_name[@]}

 

获取数组的长度

获取数组长度的方法与获取字符串长度的方法相同,例如:

 

取得数组元素的个数

length=${#array_name[@]}

或者

length=${#array_name[*]}

取得数组单个元素的长度

lengthn=${#array_name[n]}

 

四、Shell注释

单行注释:以 开头的行就是注释,会被解释器忽略。

多行注释:除了使用多个#之外还可以用如下方式,

 

:<<EOF

注释内容...

注释内容...

注释内容...

EOF

 

五、传递参数

我们可以在执行 Shell 脚本时,向脚本传递参数,脚本内获取参数的格式为:$n代表一个数字,为执行脚本的第一个参数,为执行脚本的第二个参数,以此类推。

1、脚本内如何获取脚本的名称?   ($0

2、脚本内如何获取第1~9个传入的参数值呢?($0~$9

 

几个特殊字符用来处理参数:

$# 传递到脚本的参数个数

$* 以一个单字符串显示所有传递的参数。

$$ 脚本运行的当前进程ID

$? 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。

 

六、shell基本运算符

原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 exprexpr 最常用。expr 是一款表达式计算工具,使用它能完成表达式的求值操作。

 

例如,两个数相加(注意使用的是反引号 而不是单引号 ')

 

#!/bin/bash

val=`expr 2 + 2`      //注意空格

echo "两数之和为 : $val"

 

注意:表达式和运算符之间要有空格,例如 2+2 是不对的,必须写成 2 + 2,这与我们熟悉的大多数编程语言不一样。

完整的表达式要被 ` ` 包含,注意这个字符不是常用的单引号,在 Esc 键下边。

 

#!/bin/bash

a=10

b=20

 

val=`expr $a \* $b`

echo "a * b : $val"      //乘号(*)前边必须加反斜杠(\)才能实现乘法运算;

 

val=`expr $b / $a`   //除法

echo "b / a : $val"

 

七、关系运算符

 

关系运算符只支持数字,不支持字符串,除非字符串的值是数字。

下表列出了常用的关系运算符,假定变量 为 10,变量 为 20

01—Shell脚本基础_shell


八、布尔运算符

01—Shell脚本基础_shell_02

 

九、逻辑运算符

以下介绍 Shell 的逻辑运算符,假定变量 为 10,变量 为 20

01—Shell脚本基础_shell_03

十、字符串运算符



下表列出了常用的字符串运算符,假定变量 为 "abc",变量 为 "efg"01—Shell脚本基础_shell_04

01—Shell脚本基础_shell_05

十一、文件测试运算符

01—Shell脚本基础_shell_06

举个例子:

#!/bin/bash

 

file="/var/www/runoob/test.sh"

if [ -r $file ]

then

   echo "文件可读"

else

   echo "文件不可读"

fi

 

十二、文件测试(test命令)

01—Shell脚本基础_shell_07

01—Shell脚本基础_shell_08