在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
•深入浅出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 "; 下面是运行结果: -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 这个例子太简单了,一点也不实用,下面来个实用的,如果你看不懂,没有关系,后面的内容会有详细解释。 复制代码 代码如下: #!/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 $# $? 等变量,下面是程序的解释: 1.判断运行参数个数,如果不等于2,显示使用"用法帮助", 其中 $0 表示就是脚本自己。 2.用grep 在$2 文件中查找$1 字符串。 3.判断前一个命令运行后的返回值(一般成功都会返回0, 失败都会返回非0)。 4.如果没有成功显示没找到相关信息,否则显示找到了。 5.其中/"表示转义,在"" 里面还需要显示"号,则需要加上转义符/" . 下面运行的例子: ./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名字一样,变量名是大小写敏感的. 对于用户变量,用户可按如下方式赋值: name="Winter" name="Winter" 输出结果应该很清楚:Hello Winter ! 这里需要注意一点:变量和'='之间不要有空格,'='和赋值也不要有空格,否则shell不会认为变量被定义。掌握了基本的使用方法,你可以完全开始你的编程工作了。不过有时候需要未雨绸缪,下面介绍用户变量的一些技巧。 2.2 使用技巧 SAT=Satur 有时候为了避免变量名和别的字符产生混淆,你最好养成习惯把变量名用{}括起来。 对于未赋值的变量, Shell以空值对待, 用户也可以用unset命令清除给变量赋的值.看一个例子: 复制代码 代码如下: #!/bin/sh echo "a=$a" ; a=2 echo "a=$a" ; unset a echo "a=$a" ; 先猜猜结果是什么? -bash-2.05b$ ./test .sh a= a=2 a= 如果你懂C++,你应该知道有个变量修饰符"const",用于避免程序一不小心对变量进行修改。在shell中,对于用户变量,你可以使用同样的修饰符"readonly", 如果我把上面的例子修改成这样: 复制代码 代码如下: #!/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有两种赋值方式,第一种是直接用下标赋值: name[0]="Tom" 3 shell 环境变量
这些变量,要关注的最多的就是PATH, 其重要性不要我说了吧? 如果你希望把你定义的变量让其他所有的shell程序都能使用,也就是定义新的环境变量。你只要使用export关键词就可以了。例如: export MY_NAME=Winter export PATH=/home/winter/bin:$PATH 上面的程序中,第一行输出MY_NAME变量,第二行是在环境变量PATH中增加一个路径/home/winter/bin 。如果你希望这些设置在你登陆unix/linux都有效,你需要把他们加入到你的shell启动脚本中, 如果是使用bash ~/.bash_profile 其他版本你看一眼就知道了,在你的home目录下,以"."开头的文件,一般都会隐藏起来,你需要使用'ls -al'命令来显示。 |
请发表评论