威斯尼斯人官网shell script 学习笔记—–shell变量,学习笔记—–shell

shell script 学习笔记—–shell变量,学习笔记—–shell

1、在赋值语句name=value中无法存在空格,举例:name =
value那样的款式会被以为是八个变量,因为精气神儿上的话,脚本的从头到尾的经过就是传给shell程序的变量,而变量之间是通过空格区分的。若是想要在value里面现身空格,则须要用引号标记出来,想要应用变量的内容则在变量名前加‘$’符号,如下:

威斯尼斯人官网 1

2、当大家须要在有个别非空格字符之间插入变量时,比方:为了脚本的扩充性,常在门路名/home/my$USEENCOREtxt中用变量替代生机勃勃部分剧情,可是这么做的话,大家其实不可能区分变量名是USEENVISION依然USEKoleostxt,搞定办法其实非常轻便,把变量名用花括号括起来就可以,如/home/my${USEENVISION}txt

3、定义变量时,在变量名前加export就能够将该变量变为全局变量,而且可以在子shell中调用它,可是须要介意的是,该全局变量是透过“值传递”的点子步入子shell的,相似与C语言中的函数参数,固然在子函数中更改了它的值,可是它原先的值并未改换。那么有未有周围指针的事物能直接退换原变量的值吗?回答是,没有。(通过env或许export
-p命令能够查阅全部的全局变量)

威斯尼斯人官网 2

4、同时大家能像C语言相仿一贯给shell脚本传递命令行参数,在剧本中$1就表示第七个参数,$2代表第三个参数,就那样推算,供给在意的是,今世表第十一个以上的参数时,需求用花括号将序号括起来,比如:${10},因为$10会被解释为$1和0。这里须求在乎的是,若是命令行参数表示的字符串里有空格,那么在输入命令行是要将该参数用引号括起来,同一时候在本子里援用时,也要选择引号,譬如:ls
“${1}”,不然在本子内部,该参数也会被误觉得由空格分割的八个参数

威斯尼斯人官网 3

威斯尼斯人官网 ,5、在剧本中,符号$*代表全部的命令行参数,大家能够用如下形式对其進展遍历,可是普通大家更推荐应用”[email protected]”,因为它能在命令行参数内部有空格的时候将其差异开来

威斯尼斯人官网 4

6、变量$#用来总计命令行参数的个数:

威斯尼斯人官网 5

7、变量的暗中认可值:1)B=${A:-“xxx”}表示后生可畏旦变量A未设置或值为空,则B=“xxx”,2)与:-符号分歧的是${A:=”xxx”}表示假设A未设置或为空,则将A设置为”xxx’並且再次回到值”xxx”,你能够认为:-只做重回值,而不做赋值。3)${A=”xxx”}表示当且仅当变量A未棉被服装置,它的值置为”xxx”,这么做的乐趣正是允许变量名的暗中认可值为空

威斯尼斯人官网 6

威斯尼斯人官网shell script 学习笔记—–shell变量,学习笔记—–shell。8、数组变量的定义与运用如下所示:

威斯尼斯人官网 7

9、最后,其实在变量赋值的时候,固然使用了双引号,那么双引号内的能够不仅是字符串,实际上shell会将引号内的原委展开分析。譬如引号内的$HOME将被替换来变量HOME的值,$(pwd卡塔尔(قطر‎将被替换来命令pwd的输出,$((1+1卡塔尔国卡塔尔国则将被替换到1+1运算的结果

威斯尼斯人官网 8

 

参考文献:《bash Cookbook》,Carl Albing

script
学习笔记—–shell变量,学习笔记—–shell
1、在赋值语句name=value中不可能存在空格,举例:name =
value那样的款型会被感到是三个变量…

发表评论

电子邮件地址不会被公开。 必填项已用*标注

相关文章