定义变量:
变量名=变量值,注意:变量名和等号之间不能有空格
your_name="hello world"
变量名的命名规则:
- 命名只能使用英文字母,数字和下划线;
- 首个字符不能以数字开头;
- 不能使用bash里的关键字(可用help命令查看保留关键字)。
除了显式地直接赋值,还可以用语句给变量赋值,如:
#将/etc下目录的文件名循环出来
for file in `ls /etc`
#或
for file in $(ls /etc)
使用变量:
使用一个定义过的变量,只要在变量名前面加美元符号即可,如:
#!/bin/bash
your_name="hello world"
echo $your_name
#或
echo ${your_name}
变量名外面加花括号是为了帮助解释器识别变量的边界(同php),比如下面这种情况:
只读变量
使用 readonly 命令可以将变量定义为只读变量,只读变量的值不能被改变。
下面的例子尝试更改只读变量,结果报错:
#!/bin/bash
myUrl="http://www.google.com"
readonly myUrl
myUrl="http://www.baidu.com"
运行脚本,结果如下:
/bin/sh: NAME: This variable is read only.
删除变量
使用 unset 命令可以删除变量。语法:
unset variable_name
变量被删除后不能再次使用。unset 命令不能删除只读变量。
变量作用域:
- 局部变量: 局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量。
- 环境变量: 所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。必要的时候shell脚本也可以定义环境变量。
- shell变量: shell变量是由shell程序设置的特殊变量。shell变量中有一部分是环境变量,有一部分是局部变量,这些变量保证了shell的正常运行