变量基础及深入
- 变量类型
变量可分为两类:环境变量(全局变量)和局部变量
环境变量也可以成为全局变量,可以在创建他们的shell及派生出来的任意子进程中使用。局部变量只能在创建他们的shell函数脚本中使用。还有一些变量是用户创造的,其他的则是专用shell变量。 - 环境变量
环境变量用于定义shell的运行环境,保证shell命令的正确执行,shell通过环境变量来确定登录用户名、命令路径、终端类型、登录目录等,所有的环境变量都是系统全局变量,可用于所有子进程仲,这包括编辑器、shell脚本和各类应用。
环境变量可以在命令行中设置,但用户退出时这些变量值也会丢失,因此最好在用户家目录下的.bash_profile文件中或全局配置/etc/bashrc,/etc/profile文件或者/etc/profile.d中定义。将环境变量放入profile文件,每次用户登录时这些变量值都将被初始化。
传统上,所有环境变量均为大写。环境变量应用于用户进程前,必须用export命令导出。
环境变量可用在创建他们的shell和从该shell派生的任意子shell或进程中。他们通常被称为全局变量以区别局部变量。通常,环境变量应该大写,环境变量已经用export内置命令给导出的变量。 - 局部变量
定义本地变量
本地变量在用户当前的shell生存期的脚本中使用。例如,本地变量OLDBOY取值ett098,这个值只在用户当前shell生存期终有意义。如果再shell中启动另外一个 进程或退出,本地变量OLDBOY值将无效
1普通字符串变量定义
变量名=value
变量名=’value’
变量名=”value”
命令变量:
变量名=“
变量名=$() - 有关单引号、双引号与不加引号的简要说明
例子:
[liangdx@PYTHON ~]$ echo 'this is date'
this is date #单引号-看到啥显示啥
[liangdx@PYTHON ~]$ echo 'this is `date`'
this is `date` #单引号-看到啥显示啥
[liangdx@PYTHON ~]$ echo "this is `date`"
this is Fri Jun 2 23:04:11 CST 2017
双引号如果是里面是变量,会先把变量解析成具体内容再显示
[liangdx@PYTHON ~]$ echo "this is $(date)"
this is Fri Jun 2 23:04:28 CST 2017
双引号如果是里面是变量,会先把变量解析成具体内容再显示
特殊例子
awk是反过来的
1.
[liangdx@PYTHON ~]$ ETT=123
[liangdx@PYTHON ~]$ awk 'BEGIN {print "$ETT"}'
$ETT
[liangdx@PYTHON ~]$ awk 'BEGIN {print '$ETT'}'
123
[liangdx@PYTHON ~]$ awk 'BEGIN {print $ETT}'
2.
[liangdx@PYTHON ~]$ ETT='abc'
[liangdx@PYTHON ~]$ awk 'BEGIN {print "$ETT"}'
$ETT
[liangdx@PYTHON ~]$ awk 'BEGIN {print '$ETT'}'
[liangdx@PYTHON ~]$ awk 'BEGIN {print "'$ETT'"}'
abc
[liangdx@PYTHON ~]$
3.
[liangdx@PYTHON ~]$ ETT=”abc”
[liangdx@PYTHON ~]$ awk 'BEGIN {print "$ETT"}'
$ETT
[liangdx@PYTHON ~]$ awk 'BEGIN {print '$ETT'}'
[liangdx@PYTHON ~]$ awk 'BEGIN {print "'$ETT'"}'
abc