shell学习笔记之二(变量)

是一种弱类型的变量,声明时不需要指定其变量类型,也不需要遵循“先声明后使用”,任何时候只要想用就可以用。局部变量在某个shell中生效的变量,在其他shell中无效。可以使用local内建命令来“显示”的声明局部变量环境变量shell脚本中,默认是全局的预设的环境变量:BASH:说明bash的全路径BASH_VERSIONCDPATH:用于快速进入目录EUID:记录当前用户的UIDFUNCNAME :在用户函数体内部,记录当前函数体的函数名HISTCMD:记录下一条命令在history命令中的编号HISTFILE:记录history命令的记录文件的位置HISTFILESIZEHOSTNAMEHOSTTYPE:主机架构MACHTYPE:主机类型的GNU标示LANG:语言环境PWD:记录当前目录OLDPWD:记录之前目录PATHPS1:命令提示符,默认是[\u@\h \W]\$,其中\u是用户名,\h是主机名,\W是当前工作目录的basename,\$是用户UID的替换字符。定义和使用变量var=value注意:1、=两边没有空格 var = value(X)2、变量中有空格时必须要用””或’’引起来取值:${var}或者$var注意:1、如果变量值引用的是其他变量,则必须使用双引号。因为单引号会阻止shell解释特殊字符$。2、由于shell是弱变量特性,因此即使在脚本中没有定义变量也是可以引用的,从而使得错误很难找到。3、shell具有弱变量的特性,不需要声明就可以使用,可以设置变量必须先声明再使用shopt -s -o nounset取消变量unset var取消函数unset function特殊变量位置参数$1,…,$n 当n>10时,需要写成$(n)$0$@/$*脚本所有的参数$#脚本参数总和脚本或命令返回值$?上一个命令的返回值,要查看某个命令的返回值必须在运行中个命令后立即查看$?linux中规定正常的退出命令和脚本应该以0作为其返回值,任何非0的返回值都表示命令未正确退出或正常执行在自动化脚本中,也可以通过$?变量的值判断之前命令的执行状态,从而采取不同的动作数组shell变量是弱类型的,并不要数组的每一个元素都是相同的类型,shell中的数组对元素个数没有限制,但是只支持一维数组shell对于数组变量的声明非常宽松,随时都可以根据需要增加变量中的元素定义declare -a array初始化array[0]=0array[1]=1array[2]=”hello”或declare -a array=(0 1 “hello”)array[3]=’waNG’或array=(‘john’ ‘sue’)或array=([3]=3 [4]=4 [7]=4)跳号赋值数组操作取值${arrayname[index]}例:1、echo ${array[0]} //取单个元素2、echo ${array[@]} //取所有的元素值,得到的是以空格隔开的元素值3、echo ${array[*]} //取所有的元素值,得到是一整个字符串4、arr1=arr2//这样相当于arr1=arr2[0]长度利用@或*可以将数组扩展成列表,然后使用#来获取数组元素的个数例:1、echo ${#array[@]}2、echo ${#array[*]}通过本例也就知道了求字符串的长度,${#string}截取截取某个元素的一部分,对象可以是整个数组或某个元素例:1、取出数组的第一,,第二个元素echo ${array[@]:1:2}2、取出第二个元素从第0个开始连续5个字符echo ${array[2]:0:5}连接conn=(${arr1} ${arr2})替换数组元素array=(${array[@]/old/new})取消数组或元素unset array[0]unset array只读变量readonly RO=100等效于:declare -r RO=100变量的作用域1、shell变量的作用域是在本shell内,属于本shell的全局变量,也就是从定义该变量的地方开始到shell结束,或者主动使用unset删除了该变量的地方为止。2、在函数题内使用local关键字声明了和全局变量同名的局部变量后,对该变量的操作只会影响局部变量,而不会影响与之同名的全局变量。

我想,这就是旅行的真义吧。

shell学习笔记之二(变量)

相关文章:

你感兴趣的文章:

标签云: