Shell变量是什么

时间:2021-12-08 00:14:30

 

  a=1

  为什么a等于1?

  a能不能等于2当然可以甚至a还可以等于cwb! 

  这就是变量,一直在变化的量.

  来拆分一下上面的公式,公式左边的a称之为变量名,公式右面的1称之为变量值.

  需要明确的是:变量名是固定的,变量值是变化的.

 

  那么变量值如何变化呢这就涉及到一下几类变量

  [自定义变量]

  a = 1 这就是自定义变量,变量值由自己定义,自己说了算.

  [预定义变量]

  这类变量的值就不能自己说了算,而是系统本身已经定义好的,虽然是预先定义好的,但变量永远在变化.

   比如:USER这个预定义变量,它的值是什么呢?这得取决于当前登录系统的用户了,如果user1登录的,那么USER=user1;如果cwb登录的,那么USER=cwb.

  

  [本地变量]

  以redhat5.2为例,当前已经登录系统,所使用的shellbash,那么当登录系统后自定义一个变量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.单引号’’里面的内容不会被看作变量,而双引号””里面的内容会被认做变量~

本文出自 “我的IT之路” 博客,请务必保留此出处http://webcwb.blog.51cto.com/5096376/1172318