linux初学习之-变量和引用

概念理解:

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

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

本地变量是仅可以在用户当前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将反引号中的内容解释为系统命令
\反斜线转义符,屏蔽下一个字符的特殊意义

 

命令替换:

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

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

 

如有错误,望告知!共同学习,共同进步……

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值