linux变量最大长度,51CTO博客-专业IT技术博客创作平台-技术成就梦想

变量操作总结:

${Var:-Value}        变量Var 为unset 或 null  则输出Value。 有值则输出变量Var的值。

${Var:=Value}        变量Var 为unset 或 null  则输出Value,并且赋值于变量Var。 同上。

${Var:+Value}        变量Var 为unset 或 null  则输出变量Var。 有值则输出Value.

${Var:?Value}        变量Var 为unset 或 null  则输出错误信息Value。有值则输出变量Var的值。

${Var-Value}        变量Var 为 unset 则输出Value。 有值或为空,则输出变量Var的值。

${Var=Value}        变量Var 为 unset 则输出Value,并且赋值于变量Var。        同上。

${Var+Value}        变量Var 为 unset 则输出变量Var。有值或为空,则输出Value

${Var?Value}        变量Var 为 unset 则输出错误信息Value。 有值或为空, 则输出变量Var。

在这种的操作中,只有三种情况:1. 变量有值, 2. 变量没有值,  3. 没有变量

在上面加:的操作符中, 空不代表值,    在没有:号的操作符中,空也代表为值。

${变量}      一般变量引用。  {} 一般情况可省略。

${#变量}     取变量中字符的个数(长度)。

bash脚本就是由bash提供的,变量当然也是bash提供的了。

所以bash的glob通配符也可以在大部分里使用。

一、 变量值的编辑:

1. 变量字符匹配则不输出。   2. 变量内容字符偏移并截出余下的部分字符。

3. 变量字符的替换。

1.  所匹配到的变量内容将不显示。

操作符:#                 ${变量#匹配字符}$ do="Hello World"

$ echo $do

Hello World

$ echo ${do#He}

llo World                    #He没有显示

$ echo ${do#*l}

lo World                     #从左到右匹配

#号在上面那种变量应用中,把左边变量的值,按右边的字符串从左到右最短区配,

所区配到的字符不输出。 支持通配符,如?。

操作符: ##$ echo ${do##*l}

d                        #变量的值是Hello World, 从左边一直匹配到倒数第二个字符l.

##号,这个则就是最长区配了。   记住是从左到右的区配顺序。

操作符:%           ${变量%匹配字符}$ echo $do

Hello World

$ echo ${do%ld}

Hello Wor

$ echo ${do%o*}

Hello W

%号跟上面#号的形式都一样,只不过是从右到左的匹配。 同样的一个%号是 最短区配

操作符:%%$ echo ${do%%o*}

Hell

%%号,两个%号,最长区配。  通配符都是支持的。 毕竟都是在shell下,经由shell解释输出。

2.  上面的 # % 都是用来定义匹配变量内容的操作。而下面是用来定义固定的字符的操作。

${变量:数字}$ echo $do

Hello World

$ echo ${do:3}

lo World                    #变量内容的前三个字符没有显示。

前面的3个字符没有输出, 专业点叫作 偏移 , 向右偏移了3个字符。

$ echo ${do:3:2}

lo

$ echo ${do:3:5}

lo Wo

在上面偏移的基础上,再显示向后截取的几位字符。 空格可也是字符啊。

3.  替换变量内容。

${变量/匹配字符/替换字符}$ echo ${do/l/L}

HeLlo World

把第一个匹配到的字符,也就是l , 替换成大写L .

这里是只替换了第一个匹配到的字符。如果把变量后面的/变成两个,就变成替换所有了。

${变量//匹配字符/替换字符}$ echo ${do//l/L}

HeLLo WorLd

替换了所有的l,这里也是可以用通配符的, 但是这里没有最长最短匹配之说,只有替换1个还是替换所有的字符。至于效果,亲们可以自己试试。

二、 变量....., 不知道叫什么名了。

在这种的操作中,只有三种情况:1. 变量有值, 2. 变量没有值,  3. 没有变量

注意: 一般情况下,变量为空也是一种值。 除非有特殊的操作。

do=              do变量有值了。

declare  var     生成了var变量,但var变量没有值。

1.  ${变量-值}

里面的是减号。  那个值当然也可以用变量,不过要加上$,相当于变量引用。-号的左边和右边完全是不同的两个部分。

$ echo $do

Hello World

$ echo ${do-kaka}              #在do有值的情况下,输出do的值。

Hello World

$ unset do                     #删除变量do

$ echo ${do-kaka}              #在没有do变量的情况下,也就是没有值。则输出后面的值。

kaka

$ do=                          #在do为空的情况下。

$ echo ${do-kaka}              #在do有值的情况下,输出do的值,do是空值。

#所以输出空。

这个的别一种方式一般在判断默认值的时候用。如: do=${do:-kaka}

2.  ${变量=值}   里面是等号。$ echo $do

Hello World

$ echo ${do=kaka}                #在do有值的情况下,输出do的值。

Hello World

$ unset do

$ echo ${do=kaka}                #在没有do变量的情况下,或没有值。输出后面的值

kaka

$ echo $do

kaka                             #并且把kaka赋给变量do。

比 - 多了一项功能,只要在变量,就会把kaka赋给do。

3.  ${变量+值}   里面是加号。$ echo $do

Hello World

$ echo ${do+kaka}              #do有值的情况下,输出kaka

kaka

$ unset do

$ echo ${do+kaka}              #在没有do这个变量的情况下或者没有值。那就没有吧。

$ do=

$ echo ${do+kaka}              #空值,输出kaka

kaka

看样子正好与 - 相反, 这个是变量有值则用后面的值,而 - 号是没值则用后面的值。

4.  ${变量?值}$ echo $do

Hello World

$ echo ${do?kaka}

Hello World

$ unset do

$ echo ${do?kaka}              # 看到了没,在没有do这个变量的情况下或者没有值。

# 提示错误信息是 kaka

bash: do: kaka

$ do=

$ echo ${do?kaka}

除了没有值的情况下会报错,并且报错信息是kaka外,就没有别的了。

下面还是关于 - = + ? 的,不过变成了 :-  :=  :+  :?   。

不一样之处就是把空值给抹去了,从此以后空就真的空了, 空不再代表值而存在,

而是跟unset一样。

这里说明一下, 以shell来说。其实unset就是把变量的内存空间的地址给撤销了,

而变量空值,就是有变量的内存空间地址,不过内存空间里面没有数据。

1.  ${变量:-值}$ echo $do

Hello World

$ echo ${do:-kaka}

Hello World

$ unset do

$ echo ${do:-kaka}               #没有do变量,同样的相当于没有值。 输出kaka

kaka

$ do=

$ echo ${do:-kaka}                #空不再代表值, 在do没有值的情况下

#输出kaka

kaka

怎么样,区别只有一点, 空不再代表值了。

2. ${变量:=值}$ echo $do

Hello World

$ echo ${do:=kaka}

Hello World

$ echo $do

Hello World

$ unset do

$ echo ${do:=kaka}

kaka

$ echo $do

kaka

$ do=

$ echo ${do:=kaka}                  #空不再代表值,所以输出kaka

kaka

$ echo $do

kaka

还是那个意思,kaka输出,并且赋值给了do。    空不再代表值了。

3. ${变量:+值}$ echo $do

Hello World

$ echo ${do:+kaka}                #在do有值的情况下,输出kaka

kaka

$ unset do

$ echo ${do:+kaka}                #在do不存在的时候,也就是没有值。 输出do的值,

#而do的值当然是不存在的,输出空白行。

$ do=

$ echo ${do:+kaka}                #do为空,空不再代表值。 没有值就不会输出后面的值。

#同样的空白行。

+ 号是有值才会用后面的那个值的。 跟-号正好相反。

4. ${变量:?值}$ echo $do

Hello World

$ echo ${do:?kaka}

Hello World

$ unset do

$ echo ${do:?kaka}                   #没有do变量,当然没有值,报kaka错误。

bash: do: kaka

$ do=

$ echo ${do:?kaka}                   #do为空,代表没有值。 报kaka错误。

bash: do: kaka

这个跟-号也差不多了, 只不过还里是输出的错误信息。

good boy, nice girl.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值