•深入浅出Shell编程: Shell 变量
◦1 系统变量
◦2 Shell用户变量
■2.1 基础
■2.2 使用技巧
■2.3 shell 中的数组
◦3 shell 环境变量
先不要管Shell的版本,来看看Shell 变量,在Shell中有三种变量:系统变量,环境变量,用户变量。其中用户变量在编程过程中使用最多,系统变量在对参数判断和命令返回值判断会使用,环境变量主要是在程序运行的时候需要设置。
1 系统变量
Shell常用的系统变量并不多,但却十分有用,特别是在做一些参数检测的时候。下面是Shell常用的系统变量
表示方法 描述
$n $1 表示第一个参数,$2 表示第二个参数 ...
$# 命令行参数的个数
$0 当前程序的名称
$? 前一个命令或函数的返回码
$* 以"参数1 参数2 ... " 形式保存所有参数
$@ 以"参数1" "参数2" ... 形式保存所有参数
$$ 本程序的(进程ID号)PID
$! 上一个命令的PID
其中使用得比较多得是 $n $# $0 $? ,看看下面的例子:
代码如下:
#!/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 基础
不管系统变量有多少,对于需求来说,总是不够的。用户变量是最常用到的变量,使用也十分简单。
新闻热点
疑难解答