本地变量又叫局部变量,在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量。
当关闭终端,再开启一个,原来声明的变量不见了,变量设置为只读后不可废弃,不可修改。
定义变量时,变量名不加美元符号($),如:
variable="hello yanfadi"
变量名命名规则如下:
变量定义示例:
myUrl="http://www.yanfadi.com"
myNum=100
使用一个定义过的变量,只要在变量名前面加美元符号($)即可,如:
name="yanfadi"
echo $name
echo ${name}
变量名外面的花括号是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界。
如下情况所示:
for skill in Action Java
do
echo "I am good at ${skill}Script"
done
输出结果:
I am good at ActionScript
I am good at JavaScript
如果不给skill加上花括号({}),写成
echo "I am good at $skillScript"
解释器就会将$skillScript当成一个变量(其值为空)。
执行结果如下:
I am good at
建议:给所有变量都加上花括号,养成编程的好习惯。
已定义的变量,可以被重新定义,如:
myUrl="http://www.yanfadi.com"
echo ${myUrl}
myUrl="http://www.zimudou.com"
echo ${myUrl}
这样写是合法的,但注意,第二次赋值的时候不能写 $myUrl=”http://www.zimudou.com",使用变量的时候才加美元符($)。
使用 readonly 命令可以将变量定义为只读变量,只读变量的值不能被改变。
示例如下:
#!/bin/bash
myUrl="http://www.yanfadi.com"
readonly myUrl
myUrl="http://www.zimudou.com"
以上示例尝试更改只读变量myUrl,结果报错。结果如下:
myUrl: 只读变量
使用unset命令可以删除变量。语法:
usnet variable
变量删除后不能再次使用。示例:
#!/bin/sh
myUrl="http://yanfadi.com"
unset myUrl
echo $myUrl
以上脚本没有任何输出。
unset命令不能删除只读变量。示例:
#!/bin/sh
myUrl="http://yanfadi.com"
readonly myUrl
unset myUrl
echo $myUrl
运行以上脚本会出现 “myUrl:无法取消设定” 的错误信息。