变量是一个很重要的概念,不管是bash脚本仍是其余语言,都是如此。在bash中,建立变量很简单,给变量一个名称便可。默认状况下,变量的值为空。咱们能够经过等号为变量赋值。须要注意的是,变量和变量的值不是一个概念。当给定变量一个名称后,例如myvar,咱们须要经过$取得变量的值,即$myvar。使用echo输出变量的值。php
输出变量的值的格式为:echo $myvar 或者 echo ${myvar}linux
使用变量的时候,须要注意如下几点:bash
1. 给变量赋值的时候,若是值包含空格,须要用单引号或者双引号包起来,不然会引发错误spa
2. 给变量赋值的时候,若是使用单引号,那么单引号里面的变量就不会解析成真正的值。使用双引号则能够3d
3. 能够将一个命令执行的结果赋给一个变量。格式为:myvar=$(command) 或者 `comand`。值得注意的是,务必要将$()和${}的用途分开blog
4. 变量的扩增,即将新的内容增长到变量原来的值上去。格式为"$变量名称" 或 ${变量} 扩增内容进程
5. 使用export将变量变成环境变量,使得bash子进程可使用变量。请看下图:ci
6. 判断变量是否未设置,若是未设置则用-后面的内容赋值。语法为:var2=${var1-hellovar1}(若var1未设置,那么将hellovar1赋值给var2,不然将var1的值赋给var2)。须要注意的是,若是var1设置为空值了,那么也算是赋值了字符串
7. 判断变量是否未设置或者设置为空值,若是未设置或者设置为空值则用-后面的内容赋值。语法为:var2=${var1:-hellovar1}。以下图,注意与第六点区分开get
关于第六、7的更多用法与规则,参考下表(出自鸟哥Linux私房菜:http://vbird.dic.ksu.edu.tw/linux_basic/0320bash_2.php):
变量配置方式 | str 没有配置 | str 为空字符串 | str 已配置非为空字符串 |
var=${str-expr} | var=expr | var= | var=$str |
var=${str:-expr} | var=expr | var=expr | var=$str |
var=${str+expr} | var= | var=expr | var=expr |
var=${str:+expr} | var= | var= | var=expr |
var=${str=expr} | str=expr var=expr |
str 不变 var= |
str 不变 var=$str |
var=${str:=expr} | str=expr var=expr |
str=expr var=expr |
str 不变 var=$str |
var=${str?expr} | expr 输出至 stderr | var= | var=$str |
var=${str:?expr} | expr 输出至 stderr | expr 输出至 stderr | var=$str |