0%

shell脚本入门之二 - 变量

任何一种编程语言都有变量,shell脚本也不例外。

基本约定

  1. 变量默认全都是字符串

    也就是说如果有一个变量a=1,当执行echo $a + 1的时候,输出结果是1 + 1,而不是2

  2. 变量不需要事先声明

变量名约定

  1. 由数字,大小写字母,下划线(_)组成

  2. 不能以数字开头

也就是说变量名应当符合正则表达式:[a-zA-Z_][a-zA-Z0-9_]+

变量的赋值和引用

赋值

  1. 因为变量不需要声明,所以对变量进行赋值的过程实际上也是创建变量的过程。

  2. 使用=对变量进行赋值。

  3. 赋值的时候=两边不能有任何空格

  4. =右边的值可以不加引号,但是如果其中包含空格,则需要加引号

1
2
$ a=hello #变量的值可以不用引号
$ a="hello world" #如果值中包含空格,则需要引号

引用

  1. 对变量进行引用的时候,在其名字前面加$

  2. 对变量进行引用的时候,可以在引号内部进行

  3. 如果引用的时候,变量名后面紧跟有其它字符,可能造成混淆,可以用{}将变量名包括起来

例如:

1
2
$ num=2
$ echo "this is the ${num}nd"

变量的数学运算

前面说过,变量默认全是字符串,也就是说像下面的例子是不会输出2的:

1
2
3
$ var=1
$ var=$var+1
$ echo $var #输出结果为 1+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