shell变量一
1.变量类型 变量可分为两类:环境变量(全局变量)和局部变量。 环境变量也可称为全局变量,可以在创建他们的shell及其派生出来的任意子进程shell中使用。局部变量只能在创建他们的shell函数或脚本中使用。还有一些变量是用户创建的,其它的则是专用shell变量。 2.环境变量(全局变量) 1)环境变量 环境变量用于定义shell的运行环境,保证shell命令的正确执行,shell通过环境变量来确定登录用户名、命令路径、登录目录等,所以的环境变量都是系统全局变量,可用于所有子进程中,这包括编辑器、shell脚本和各类应用。 环境变量可以再命令行中设置,但用户退出时这些变量值也会对视,因此最好在用户家目录下的.bash_profile文件中或全局配置/etc/bashrc,/etc/profile文件或者etc/profile.d中定义。将环境变量放入profile文件中,每次用户登录时这些变量值都将被初始化。 传统上,所有环境变量均为大写。环境变量应用于用户进程前,必须用export命令导出。 环境变量可用在创建他们的shell和从该shell派生的任意子shell或进程中。他们通常被称为全局变量以区别局部变量。通常,环境变量应该大写。环境变量是已经用export内置命令导出的变量。 有一些环境变量,比如HOME、PATH、SHELL、UID、USER等,在用户登录之前就已经被/bin/login程序设置好。通常环境变量定义并保存在用户家目录下的.bash_profile文件中。 2)设置环境变量(全局变量) 设置环境变量(设置之后需要生效该变量,可以用"."点加载,eg:./etc/profie) 如果想设置环境变量,就要在给变量赋值之后或设置变量时使用export命令。带-x选项的declare内置命令也可完成同样的功能。(注意:输出变量时不要在变量名前加$)
在/etc/profile 文件中添加,一般在最后一行添加。 ①export 变量名(一般大写)=value ②变量名=value export 变量名(export可以导出多个变量名 export 变量名1 变量名2,各个变量名之间用空格隔开) ③declare -x 变量名=value 3)显示与取消环境变量 显示环境变量 ①echo $变量名 ②用env(printenv)或set显示默认的环境变量 取消环境变量 unset 变量名(取消环境变量时不要加$,这只是临时取消,并不是永久取消,要想永久取消还需要写在环境变量文件中 /etc/profile) 3.局部变量 1)定义本地变量 本地变量在用户当前的shell生存期的脚本中使用。例如,本地变量XXX取值为yusheng,这个值只在用户当前shell生存期中有意义。如果在shell中启动另一个进程或退出,本地变量XXX值将无效。 2)普通字符串变量定义 变量名=value 变量名=‘value‘ 变量名="value" shell中变量名的要求:一般是字母,数字,下划线组成。字母开头,不使用关键字(只是建议) eg: a=192.168.1.1 b=‘192.168.1.1‘ #单引号中是什么变量值就是什么 c="192.168.1.1" echo "a=$a" echo "b=$b" echo "c=${c}"#$c 与${c}等同 >>>>> a=192.168.1.1 b=192.168.1.1 c=192.168.1.1 提示: 第一种定义a变量的方式是直接定义变量内容,内容一般为简单连续的数字、字符串、路径名等。 第二种定义b变量的方式是通过单引号定义变量。这个方式的特点是:输出变量时引号里是什么就输出什么,即使内容中有变量也会把变量名原样输出。此法比较适合定义显示纯字符串。 第三种定义c变量方式是通过双引号定义变量。这个方式的特点是:输出变量时引号里的变量会经过解析后输出该变量内容,而不是吧引号中变量名原样输出,适合字符串中附带有变量的内容的定义。 习惯:数字不加引号,其他默认加双引号 注意:awk调用shell单双引号与此结论相反,单引号解析,双引号不解析。 建议: ①纯数字(不带空格),定义方式可以不加引号(单或双)。 ②没特殊情况,字符串一般用双引号定义,特别是多个字符串中间有空格时。 ③变量定义内容需要原样输出时,用单引号 3)变量命名的规范 ①变量命名要统一,使用全部大写字母,如PHONE_NUM;语义要清晰,能够正确表达变量内容的含义,过长的英文单词可采用前几个字符代替。多个单词连接使用“_”下划线连接,引用时,最好以${PHONE_NUM}加大括号或"${PHONE_NUM}"外面加双引号方式引用变量; ②避免无含义字符或数字 ③脚本中全局变量和局部变量命名 ⑴脚本中的全局变量定义,如PATH,在变量使用时,使用{}大括号将变量括起或"${PATH}" ⑵脚本中的局部变量定义:存在于脚本函数(function)中的变量称为局部变量,要以local方式进行声明,使之只在本函数作用域内有效,防止变量在函数中的命名与变量外部程序中变量重名造成程序异常。 function Testfunc{ local a for((a=0;a<3;a++)) do echo "morning" done } ④变量合并:当某些变量或配置要组合起来才有意义时,如文件的路径和文件名称,建议将要组合的变量合并到一起赋值给一个新的变量,这样既方便之后的调用,也为以后的修改提供方便。 ⑤总结:多学习系统自带的/etc/init.d/functions函数库脚本的定义思路。 3.把命令定义为变量 ①CMD=`ls`
②cmd=$(ls)(推荐) 执行命令变量:echo $变量名 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |