先不要管Shell的版本,来看看Shell 变量,在Shell中有三种变量:系统变量,环境变量,用户变量。其中用户变量在编程过程中使用最多,系统变量在对参数判断和命令返回值判断会使用,环境变量主要是在程序运行的时候需要设置。
1 系统变量Shell常用的系统变量并不多,但却十分有用,特别是在做一些参数检测的时候。下面是Shell常用的系统变量
#!/bin/sh #This file is used to explain the shell system variable. echo "the number of parameter is $# "; echo "the return code of last command is $?"; echo "the script name is $0 "; echo "the parameters are $* "; echo "\$1 = $1 ; \$2 = $2 "; 下面是运行结果: BeautifierPlugin Error: Unable to handle "bash" syntax. -bash-2.05b$ ./chapter2.1.sh winter stlchina the number of parameter is 2 the return code of last command is 0 the script name is ./chapter2.1.sh the parameters are winter stlchina $1 = winter ; $2 = stlchina 这个例子太简单了,一点也不实用,下面来个实用的,如果你看不懂,没有关系,后面的内容会有详细解释。 BeautifierPlugin Error: Unable to handle "bash" syntax. #!/bin/sh if [ $# -ne 2 ] ; then echo "Usage: $0 string file"; exit 1; fi grep $1 $2 ; if [ $? -ne 0 ] ; then echo "Not Found \"$1\" in $2"; exit 1; fi echo "Found \"$1\" in $2"; 上面的例子中使用了$0 $1 $2 $# $? 等变量,下面是程序的解释:
下面运行的例子: BeautifierPlugin Error: Unable to handle "bash" syntax. ./chapter2.2.sh usage chapter2.2.sh Not Found "usage" in chapter2.2.sh -bash-2.05b$ ./chapter2.2.sh Usage chapter2.2.sh echo "Usage: $0 string file"; Found "Usage" in chapter2.2.sh 2 Shell用户变量2.1 基础不管系统变量有多少,对于需求来说,总是不够的。用户变量是最常用到的变量,使用也十分简单。用户定义的变量必须由字母数字及下划线组成,并且变量名的第一个字符不能为数字, 与其它UNIX名字一样,变量名是大小写敏感的. 对于用户变量,用户可按如下方式赋值: BeautifierPlugin Error: Unable to handle "bash" syntax. name="Winter" name="Winter" WINTER=$name echo "Hello $WINTER !" 这里需要注意一点:变量和‘=‘之间不要有空格,‘=‘和赋值也不要有空格,否则shell不会认为变量被定义。掌握了基本的使用方法,你可以完全开始你的编程工作了。不过有时候需要未雨绸缪,下面介绍用户变量的一些技巧。 2.2 使用技巧也可以用变量和其他字符组成新的字,这时可能需要把变量用{}括起,如: BeautifierPlugin Error: Unable to handle "bash" syntax.SAT=Satur echo Today is ${SAT}day 有时候为了避免变量名和别的字符产生混淆,你最好养成习惯把变量名用{}括起来。 对于未赋值的变量, Shell以空值对待, 用户也可以用unset命令清除给变量赋的值.看一个例子: BeautifierPlugin Error: Unable to handle "bash" syntax. #!/bin/sh echo "a=$a" ; a=2 echo "a=$a" ; unset a echo "a=$a" ; -bash-2.05b$ ./test.sh a= a=2 a= #!/bin/sh echo "a=$a" ; #下面增加了readonly readonly a=2 echo "a=$a" ; unset a echo "a=$a" ; -bash-2.05b$ ./test.sh a= a=2 a=2 2.3 shell 中的数组shell变量中还能设置数组,但是不同的shell版本有不同数组赋值方法,而bourne shell 中不支持数组方式。因此,如果不是十分需要,还是建议你不要使用数组。若你的数据结构十分复杂,必须要使用数组,那么我建议你还是选择别的语言吧,shell不是万能的。shell有两种赋值方式,第一种是直接用下标赋值: BeautifierPlugin Error: Unable to handle "bash" syntax. name[0]="Tom" name[1]="Tomy" name[2]="John" ... #!/usr/local/bin/bash name=("Tom" "Tomy" "John") for i in 0 1 2 do echo $i:${name[$i]} ; done; -bash-2.05b$ ./test.sh 0:Tom 1:Tomy 2:John 3 shell 环境变量shell 环境变量是所有shell 程序都会接受的参数。shell程序运行时,都会接收一组变量,这组变量就是环境变量。常用的环境变量:
这些变量,要关注的最多的就是PATH, 其重要性不要我说了吧? 如果你希望把你定义的变量让其他所有的shell程序都能使用,也就是定义新的环境变量。你只要使用export关键词就可以了。例如: BeautifierPlugin Error: Unable to handle "bash" syntax. export MY_NAME=Winter export PATH=/home/winter/bin:$PATH ~/.bash_profile |
|