xiaochuan 发表于 2018-8-25 13:05:29

Shell变量是什么

  a=1
  为什么a等于1呢?
  a能不能等于2呢? 当然可以! 甚至a还可以等于cwb!
  这就是变量,一直在变化的量.
  来拆分一下上面的公式,公式左边的a称之为”变量名”,公式右面的1称之为”变量值”.
  需要明确的是:变量名是固定的,变量值是变化的.
  
  那么变量值如何变化呢? 这就涉及到一下几类变量
  [自定义变量]
  a = 1 这就是自定义变量,变量值由自己定义,自己说了算.
  
  [预定义变量]
  这类变量的值就不能自己说了算,而是系统本身已经定义好的,虽然是预先定义好的,但变量永远在变化.
  比如:USER这个预定义变量,它的值是什么呢?这得取决于当前登录系统的用户了,如果user1登录的,那么USER=user1;如果cwb登录的,那么USER=cwb.
  
  [本地变量]
  以redhat5.2为例,当前已经登录系统,所使用的shell是bash,那么当登录系统后自定义一个变量a=1,这个变量是在当前的shell下”出生”的,所以它的变量值也仅仅在当前的shell下生效,当前的bash切换到csh时,a就失效了.若在当前bash下输入命令#bash,等于从一个bash切换到另一个bash,尽管都是bash,但是这已经是第二个bash了,而a出生于第一个bash,此时还是无效的.
  
  [环境变量]
  这个变量打破了”本地变量”的限制,只要在linux的环境里,无论shell如何变化,变量都是生效的,这里出现一个命令export (定义一个环境变量).
  比如:#export a=1
  此时a就是一个环境变量,切换任意shell时,a都是有效的~
  注:几乎所有的”预定义变量”都是”环境变量”.
  
  几个变量的表现形式例子
  1. #a=1
  #echo a   那么显示的就是 a
  #echo $a那么显示的就是 1
  #echo ‘$a’ 那么显示的就是 $a
  #echo “$a” 那么显示的就是 1
  
  2. #b=$a
  #echo b   那么显示的就是b
  #echo $b那么显示的就是1
  #echo ‘$b’ 那么显示的就是 $b
  #echo “$b” 那么显示的就是1
  
  3. #c=’$a’
  #echo $c   那么显示的就是 $a
  #echo ‘$c’那么显示的就是 $c
  #echo “$c”   那么显示的就是 $a
  
  4.#d=”$a”
  #echo $d   那么显示的就是1
  #echo ‘$d’   那么显示的就是$d
  #echo “$d”   那么显示的就是1
  
  四个例子之后,看了第一遍感觉有点乱 - -|| 好吧,那就再看一遍.
  需要注意的两点:
  1.引用变量的时候需要添加特殊符号$
  2.单引号’’里面的内容不会被看作变量,而双引号””里面的内容会被认做变量~
  
  

页: [1]
查看完整版本: Shell变量是什么