bash变量类型局部变量局部变量的作用域是整个bash进程。局部变量就是局部变量。bash中声明变量的循环是随着进程的循环而存在的。定义局部变量:setVARNAME=Jerry引用变量:${VARNAME},括号可以省略局部变量的声明:localVARNAME=VALUE环境变量环境变量作用域为当前shell进程及其子进程声明:exportVARNAME=VALUE或VARNAME=VALUE;exportVARNAME脚本在执行时将启动一个子shell进程。命令行启动的脚本会继承当前shell的环境变量。系统自动执行的脚本(不是命令行启动的)需要自定义,需要各种环境变量。位置变量$1,$2,...shift:轮换参数,默认轮换一个参数#!/bin/bash#echo$1shiftecho$1shiftecho$1shift./filetest.sh/etc/fstab/etc/inittab$1:/etc/fstab$2:/etc/inittab特殊变量$?:上次命令程序执行的执行状态的返回值,可能有两种返回值:程序执行结果程序状态返回码(0-255)0:正确执行1-255:错误执行。1,2,127系统保留$#:参数个数$*:参数列表$@:参数列表变量取消和查看unsetvariableunsetVARNAME查看变量集:查看当前shell中的变量(包括环境变量和本地变量)variables)printenv,env,export:查看当前shell中的环境变量变量命名规则1.变量和变量内容用等号“=”连接,如下图:MyName=Dabric2,空格不能直接连接两者等号两边,错误如下:MyName=DabricorMyname=Dabric3.变量名只能是英文字母和数字,但首字符不能是数字;4、如果变量内容中有空格,可以用双引号或者单引号来组合变量内容,但是双引号中的特殊字符比如$可以保留原来的特性,如下图:var="langis$LANG"thenecho$var可以得到langisen_US.UTF-8单引号中的特殊字符then只有一般字符(纯文本),如下:var='langis$LANG'thenecho$var可以得到lang是$LANG总之,在bash中:"":弱引用,可以实现变量替换'':强引用,变量替换没有完成5.可以使用转义符“\”来改变特殊字符(如[ENTER]、$、\、空格字符、'等)转换成一般字符,如:MyName=Dab\ric6,在执行字符串命令时,如果需要其他附加命令提供的信息,您可以使用反引号“`COMMAND`”或“$(COMMAND)”。例如,如果你想获取内核版本设置:version=$(uname-r)echo$version如何进入你当前的内核模块目录:#cd/lib/modules/`uname-r`/kernel#cd/lib/moudles/$(uname-r)/kernel7.如果变化量是为了扩展变量内容,可以使用“$变量名”或者${变量}来累加内容,如下所示:PATH="$PATH":/home/bin或者PATH=${PATH}:/home/bin8.如果该变量需要在其他子程序中执行,则需要使用export将该变量设置为环境变量:#exportPATH9.通常大写字符是系统默认变量,可以自己设置固定变量可以使用小写字符,方便判断;10、取消变量的方法是使用unset:"unsetvariablename"比如取消MyName的设置:#unsetMyName变量可以直接在bash配置文件(~/.bashrc)中指定,保证每次登录shell时该变量都存在
