您的位置:首页 > 运维架构 > Shell

Shell学习--(2)变量

2015-12-10 21:49 381 查看
定义变量定义变量时,变量名不加美元符号($),如:

复制纯文本新窗口


variableName="value"

variableName="value"


注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样。

变量定义举例:

复制纯文本新窗口


myUrl="http://see.xidian.edu.cn/cpp/linux/"
myNum=100

myUrl="http://see.xidian.edu.cn/cpp/linux/"
myNum=100


使用变量

使用一个定义过的变量,只要在变量名前面加美元符号($)即可,如:

复制纯文本新窗口


your_name="mozhiyan"
echo $your_name
echo ${your_name}

your_name="mozhiyan"
echo $your_name
echo ${your_name}


变量名外面的花括号是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界,比如下面这种情况:

复制纯文本新窗口


for skill in Ada Coffe Action Java
do
echo "I am good at ${skill}Script"
done

for skill in Ada Coffe Action Java
do
echo "I am good at ${skill}Script"
done


如果不给skill变量加花括号,写成echo "I am good at $skillScript",解释器就会把$skillScript当成一个变量(其值为空),代码执行结果就不是我们期望的样子了。

推荐给所有变量加上花括号,这是个好的编程习惯。

重新定义变量已定义的变量,可以被重新定义,如:

复制纯文本新窗口


myUrl="http://see.xidian.edu.cn/cpp/linux/"
echo ${myUrl}
 
myUrl="http://see.xidian.edu.cn/cpp/shell/"
echo ${myUrl}

只读变量使用 readonly 命令可以将变量定义为只读变量,只读变量的值不能被改变。

删除变量使用 unset 命令可以删除变量。语法:

复制纯文本新窗口


unset variable_name

前面已经讲到,变量名只能包含数字、字母和下划线,因为某些包含其他字符的变量有特殊含义,这样的变量被称为特殊变量。

例如,$ 表示当前Shell进程的ID,即pid,看下面的代码:

复制纯文本新窗口


$echo $$

$echo $$


运行结果
29949


特殊变量列表
变量含义
$0当前脚本的文件名
$n传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2。
$#传递给脚本或函数的参数个数。
$*传递给脚本或函数的所有参数。
$@传递给脚本或函数的所有参数。被双引号(" ")包含时,与 $* 稍有不同,下面将会讲到。
$?上个命令的退出状态,或函数的返回值。
$$当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux shell