任何一种编程语言都有变量,shell脚本也不例外。
基本约定
变量默认全都是字符串
也就是说如果有一个变量
a=1
,当执行echo $a + 1
的时候,输出结果是1 + 1
,而不是2
。变量不需要事先声明
变量名约定
由数字,大小写字母,下划线(
_
)组成不能以数字开头
也就是说变量名应当符合正则表达式:[a-zA-Z_][a-zA-Z0-9_]+
变量的赋值和引用
赋值
因为变量不需要声明,所以对变量进行赋值的过程实际上也是创建变量的过程。
使用
=
对变量进行赋值。赋值的时候
=
两边不能有任何空格=
右边的值可以不加引号,但是如果其中包含空格,则需要加引号
1 | $ a=hello #变量的值可以不用引号 |
引用
对变量进行引用的时候,在其名字前面加
$
对变量进行引用的时候,可以在引号内部进行
如果引用的时候,变量名后面紧跟有其它字符,可能造成混淆,可以用
{}
将变量名包括起来
例如:1
2$ num=2
$ echo "this is the ${num}nd"
变量的数学运算
前面说过,变量默认全是字符串,也就是说像下面的例子是不会输出2
的:
1 | $ var=1 |
但是编程是离不开数学运算的,即便是脚本编程,所以怎么办呢?
方法肯定是有的,而且根据脚本文件的第一行内容的不同,会有不同的解决方法。
如果第一行是#!/bin/sh
,可以用这样的方法:1
2
3$ var=1
$ var=$((var+1))
$ echo $var #此时的输出结果为2
如果第一行是#!/bin/bash
,可以用下面的方法:1
2
3$ var=1
$ ((var+=1))
$ echo $var
或者也可以1
2
3$ var=1
$ let 'var=var+1'
$ echo $var