shell编程(一)-变量

变量基础及深入

  1. 变量类型
    变量可分为两类:环境变量(全局变量)局部变量
    环境变量也可以成为全局变量,可以在创建他们的shell及派生出来的任意子进程中使用。局部变量只能在创建他们的shell函数脚本中使用。还有一些变量是用户创造的,其他的则是专用shell变量。
  2. 环境变量
    环境变量用于定义shell的运行环境,保证shell命令的正确执行,shell通过环境变量来确定登录用户名、命令路径、终端类型、登录目录等,所有的环境变量都是系统全局变量,可用于所有子进程仲,这包括编辑器、shell脚本和各类应用。
    环境变量可以在命令行中设置,但用户退出时这些变量值也会丢失,因此最好在用户家目录下的.bash_profile文件中或全局配置/etc/bashrc,/etc/profile文件或者/etc/profile.d中定义。将环境变量放入profile文件,每次用户登录时这些变量值都将被初始化。
    传统上,所有环境变量均为大写。环境变量应用于用户进程前,必须用export命令导出。
    环境变量可用在创建他们的shell和从该shell派生的任意子shell或进程中。他们通常被称为全局变量以区别局部变量。通常,环境变量应该大写,环境变量已经用export内置命令给导出的变量。
  3. 局部变量
    定义本地变量
    本地变量在用户当前的shell生存期的脚本中使用。例如,本地变量OLDBOY取值ett098,这个值只在用户当前shell生存期终有意义。如果再shell中启动另外一个 进程或退出,本地变量OLDBOY值将无效
    1普通字符串变量定义
    变量名=value
    变量名=’value’
    变量名=”value”
    命令变量:
    变量名=“
    变量名=$()
  4. 有关单引号、双引号与不加引号的简要说明
    shell编程(一)-变量_第1张图片

例子:

[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

你可能感兴趣的:(基础)