就像其它的任何高级语言一样,在外壳脚本中使用变量也是十分重要的。
1.给变量赋值
在pdksh和bash中,给变量赋值的方法是一样的,即在变量名后跟着等号和变量值。例如,想要把5赋给变量count,则使用如下的命令:
count=5 (注意,在等号的两边不能有空格)
在tcsh中,可以使用如下的命令:
set count=5
因为外壳语言是一种不需要类型检查的解释语言,所以,在使用变量之前无须事先定义,这和C或Pascal语言不一样。这也说明你可以使用一个变量来存储字符串或整数。给字符串赋值的方法和给整数赋值的方法一样,例如
name=Garry (在pdksh和bash中)
set name=Garry (在tcsh中)
读取变量的值
可以使用$读取变量的值。例如,用如下的命令将count变量的内容输出到屏幕上:
echo $count
位置变量和其他系统变量
位置变量用来存储外壳程序后面所跟的参数。第一个参数存储在变量1中,第二个参数存储在变量2中,依次类推。这些变量为系统保留变量,所以你不能为这些变量赋值。同样,你可以使用$来读取这些变量的值。例如,你可以编写一个外壳程序reverse,执行过程中它有两个变量。输出时,将两个变量的位置颠倒。
#program reverse,prints the command line parameters out in reverse order
echo "$2" "$1"
在外壳下执行此外壳程序:
reverse hello there
其输出入下:
there hello
除了位置变量外,还有其他的一些系统变量,下面分别加以说明:
有些变量在启动外壳时就已经存在于系统中,你可以使用这些系统变量,并且可以赋予新值:
$HOME 用户自己的目录。
$PATH 执行命令时所搜寻的目标。
$TZ 时区。
$MAILCHECK 每隔多少秒检查是否有新的邮件。
$PS1 在外壳命令行的提示符。
$PS2 在命令尚未打完时,外壳要求再输入时的提示符。
$MANPATHman 指令的搜寻路径。
有些变量在执行外壳程序时系统就设置好了,并且你不能加以修改:
$# 存储外壳程序中命令行参数的个数。
$? 存储上一个执行命令的返回值。
$* 存储外壳程序的所有参数。
$0 存储外壳程序的程序名。
"$@" 存储所有命令行输入的参数,分别表示为(“$1” "$2" .....).
$! 存储上一个后台执行命令的PID.
1.给变量赋值
在pdksh和bash中,给变量赋值的方法是一样的,即在变量名后跟着等号和变量值。例如,想要把5赋给变量count,则使用如下的命令:
count=5 (注意,在等号的两边不能有空格)
在tcsh中,可以使用如下的命令:
set count=5
因为外壳语言是一种不需要类型检查的解释语言,所以,在使用变量之前无须事先定义,这和C或Pascal语言不一样。这也说明你可以使用一个变量来存储字符串或整数。给字符串赋值的方法和给整数赋值的方法一样,例如
name=Garry (在pdksh和bash中)
set name=Garry (在tcsh中)
读取变量的值
可以使用$读取变量的值。例如,用如下的命令将count变量的内容输出到屏幕上:
echo $count
位置变量和其他系统变量
位置变量用来存储外壳程序后面所跟的参数。第一个参数存储在变量1中,第二个参数存储在变量2中,依次类推。这些变量为系统保留变量,所以你不能为这些变量赋值。同样,你可以使用$来读取这些变量的值。例如,你可以编写一个外壳程序reverse,执行过程中它有两个变量。输出时,将两个变量的位置颠倒。
#program reverse,prints the command line parameters out in reverse order
echo "$2" "$1"
在外壳下执行此外壳程序:
reverse hello there
其输出入下:
there hello
除了位置变量外,还有其他的一些系统变量,下面分别加以说明:
有些变量在启动外壳时就已经存在于系统中,你可以使用这些系统变量,并且可以赋予新值:
$HOME 用户自己的目录。
$PATH 执行命令时所搜寻的目标。
$TZ 时区。
$MAILCHECK 每隔多少秒检查是否有新的邮件。
$PS1 在外壳命令行的提示符。
$PS2 在命令尚未打完时,外壳要求再输入时的提示符。
$MANPATHman 指令的搜寻路径。
有些变量在执行外壳程序时系统就设置好了,并且你不能加以修改:
$# 存储外壳程序中命令行参数的个数。
$? 存储上一个执行命令的返回值。
$* 存储外壳程序的所有参数。
$0 存储外壳程序的程序名。
"$@" 存储所有命令行输入的参数,分别表示为(“$1” "$2" .....).
$! 存储上一个后台执行命令的PID.