Linux Shell——Shell变量

Shell的变量

同所有高级语言一样,shell编程也有变量这个概念。变量的具体定义就不需要再做介绍了。

变量的设置规则:

1.shell中变量默认为字符串型。

2.变量与变量值以等号连接。

3.等号两边不能有空格符(切记)

4.变量名称可以是英文字母、下划线与数字,但开头字符不能是数字。(变量名称要求与C语言一致)

5.变量值若包含空格,则需要用单引号或双引号将要赋给变量的内容括起来。

  双引号内的特殊字符如$等,可以保有原本的特性,如:

   var=”lang is $LANG”,再输出var的值可得”lang is en_US”

  单引号内的特殊字符则仅为一般字符(纯文本),如:

   var=”lang is $LANG”,再输出var的值可得”lang is $LANG”

6.可用转义字符”\”将特殊字符变为一般字符。

7.在一串命令中,还需要通过其他的命令提供的信息,可以用反单引号`命令`”或“$(命令)”。egvar=`uname-r` var=$(uname-r)

8.若该变量为了增加变量内容时,可用$变量名称”或${变量}累加内容。

9.若该变量需要在其他子进程执行,则需要以export来使变量变成环境变量,如,export var

10.通常大写字符为系统默认变量,自定义变量使用小写字符。

11.取消变量,使用unset命令。如,unset var

12.显示变量值,使用echo命令,在变量名前一定要加$echo $var显示变量var的值,echo var显示变量名称。

 

环境变量

env命令可以列出所有的环境变量。(export命令也可以实现这个功能)

set命令可以查看所有变量(含环境变量和自定义变量)。加上-u这个选项,调用未定义变量会报错。

子进程仅会继承父进程的环境变量,子进程不会继承父进程的自定义变量。

变量的有效范围:环境变量是全局变量,用户自定义变量是局部变量。

变量从键盘读取用read命令。

read [-pt] var

参数:

read:不加参数,会出现一个空白行等待输入。

-p  :后面可以接提示符。(read -p “Please key in your name:” var

-t   :后面可以接等待的秒数。

声明变量的类型,用declare/typeset命令

declare [-aixr] var

参数:

declare:不加参数bash会将所有变量名称与变量内容全部调出来。

-a     :将变量var定义为数组(array)类型。

-i     :将变量var定义为整数数字(integer)类型。

-x     :将变量var变成环境变量。

-r     :将变量var定义成readonly类型,该变量不能被更改内容,不能重设。

declare +x var,将-变成+可以进行取消操作。

bash环境中的数值运算,最多仅能到达整数类型,没有浮点型等。

如果不小心将变量设置为“只读”,通常需要注销再登录才能复原该变量的类型。

数组元素的读取:echo “${var[0]}”

 

变量的删除、替代与替换

var2 = “/k1/k2/k3/k2/k4”

var2的值赋给var1var1 = ${var2}

 

删除

${var1#/*k2}

#表示从变量var1的前面开始删除,*为通配符,删除到第一个k2为止

echo ${var1#/*k2},结果为/k3/k2/k4

#改为##${var1#/*k2}

##表示从变量var1的前面开始删除,删除到最后一个k2为止

echo ${var1##/*k2},结果为/k4

如果要从后面开始删的话,将#改为%%%%类似于###

 

替换:

${var/a/b},将变量var中的第一个字符串a替换成字符串b

${var//a/b},将变量var中的所有的字符串a替换成字符串b

 

var=${var-root},若变量未声明则声明变量,并将root赋给变量var。否则,不改变变量的值。

var=${var-root},若变量未声明或为空字符串,则将root赋给变量var。否则,不改变变量的值。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值