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

linux初学习之-变量和引用

2013-02-18 11:35 344 查看

概念理解:

变量本质上是存储数据的一个或多个计算机内存地址。

变量可分为:本地变量,环境变量和位置参数。

本地变量是仅可以在用户当前shell生命期的脚本中使用的变量,本地变量随着shell进程的消亡而无效(比如说在当前shell中调用另一个shell,那么本地变量同样不能在被调用的shell中使用)。

环境变量则适用于所有由登录进程所产生的子进程(父进程中的环境变量在子进程中可以使用)。

位置参数也属于变量,它用于向shell脚本传递参数,是只读的。

变量替换和赋值:

变量是某个值的名称,引用变量值就称为变量替换,$符号是变量替换符号。

变量赋值的两种格式:

1. variable=value

2. ${variable=value}

上述两行也是有区别的,比如在shell中1可以单独成行,2不能单独成行(2单独成行的话会被解释成一个命令,加入variable=1的话,会出现 1:command not found 错误)

变量替换的两种格式:

1. $variable

2. ${variable}

清除变量的值:unset 变量名

变量赋值的模式:P.130

bash shell不支持浮点型,只支持整形和字符型,默认情况下,shell脚本变量时字符型的,同时,字符型的变量还具有一个整型值,为0。如果变量中只含有数字,则为数值型,否则为字符串。

注意点( source . ):

利用source命令执行脚本何在Shell中执行脚本是有区别的,source在当前bash环境下执行命令,而执行shell脚本是启动一个子Shell来执行命令。因此,如果在Shell中直接执行一个shell文件,新的环境变量只在子shell中生效,而无法在当前的shell中生效。如果使用source或.后新的环境变量在子shell和当前shell中都生效。

上面的注意点很重要,有时候会在shell编程中用到,如果子shell中有环境变量,父shell如果想利用子shell中的环境变量就要用到source或. 。

总结:

本地变量无法传递到子进程;环境变量对所有的子进程都有效;无论是本地变量还是环境变量都无法向其父进程传递(在子进程中对环境变量的更改在父进程中无效)。

$PPID与$$的区别:

$PPID代表执行该shell的父进程的进程号,$$代表执行该shell脚本的进程号。

位置参数:

位置参数用于从命令行向shell脚本传递参数,$1代表第一个参数,$0为脚本的名字。

特殊位置参数及其意义

特殊位置参数意义
$#传递到脚本的参数数量
$*和$@传递到脚本的所有参数
$$脚本运行的进程号
$?命令的退出状态,0表示没有错误,非0表示有错误

引用

引用指将字符串用引用符号引起来,以防止特殊字符被Shell脚本重解释为其他意义。

引用时屏蔽特殊字符的特殊意义,而将其解释为字面意义。也可以将引用理解为屏蔽。

引用符号、名称及其意义

符号名称意义
" "双引号引用除美元符号($)、反引号(`)和反斜线(\)之外的所有字符
' '单引号引用所有的字符
``反引号Shell将反引号中的内容解释为系统命令
\反斜线转义符,屏蔽下一个字符的特殊意义
命令替换:

命令替换是指将命令的标准输出作为值赋给某个变量。一种是使用反引号,另一种是利用$(),并且$(可以嵌套使用)。

反引号和$()在处理双斜线\\时是有区别的,反引号将反双斜线处理为空格,$()将反双斜线处理为单斜线。

如有错误,望告知!共同学习,共同进步……
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: