1、变量分类

1)自定义变量:可以自己定义、修改和删除(以字母或数字开头,区分大小写)

2)预定义变量:bash预定义的变量,不可以直接修改。

3)位置变量:也就是命令行参数,通过命令行传递的执行参数

$n:n为1~9之间的数字,从1开始计数。

如:./test.sh first

脚本中:echo "$1" // 输出first

2、自定义变量

1)格式:变量名=变量值 (等号两边无空格,否则运行时找不到该变量)

如下:

firstv=20

secondv='user1'

2)引用变量1:$变量名或${变量名}

如下:

echo $firstv

echo $secondv

echo ${firstv}

注:使用大括号后可以紧跟其他字符,且解释器仍可以识别。

如下:

echo $firstvst // 可以识别firstv变量

echo ${firstv}st // 不可以识别firstv变量

3)赋值:如前可以用等号直接赋值,也可以通过read从键盘读取,还可以通过反引号命令结果赋值

如下:read -p "input a value:" 变量名

read -p "input a value: " thirdv

echo $thirdv

4)各种引号的意义

"": 双引号,运行使用$引用其他变量

firstv=20

echo "$firstv" // 输出:20

'' : 单引号,禁止引用其他变量,$被视作普通字符

firstv=20

echo '$firstv' // 输出为:$firstv

``: 反引号,执行一个命令,可以将其结果赋值给一个变量

fourthv=`echo 123` // 把命令的结果123赋值给fourthv

echo $fourthv // 输出为:123

5)预定义变量

$#:命令行位置参数的个数

$*:所有位置参数的内容

$?:上一条命令的执行状态,返回0表示正常,非0表示异常或出错

$0:当前执行的进程或程序名

6)数值变量运算

格式1:expr 变量1 运算符 变量2 ...

*赋值需要使用反引号,变量运算符之间要使用空格

sixv=`expr 1 + 2 \* 3 / 3`

echo "$sixv"

格式2:$((变量1 运算符 变量2))

*有空格皆可,可以直接赋值,常规语言运算符都可以,和expr有区别

fivev=$((1+3))

echo "$fivev"

expr常用运算符:

加:+

减:-

乘:\* 这里需要注意与常规语言不同

除:/

余:%