$# 传递到脚本的参数个数
$* 以一个单字符串显示所有向脚本传递的参数。与位置变量不同,此选项参数可超过9个
$$ 脚本运行的当前进程ID号
$! 后台运行的最后一个进程的进程ID号
$@ 与$#相同,但是使用时加引号,并在引号中返回每个参数
$- 显示shell使用的当前选项,与set命令功能相同
$? 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。
vi param.sh
------------------------------------------------------
#!/bin/sh
echo "This is the script name:$0"
echo "This is the basename:`basename $0`"
echo "This is the first paramter:$1"
echo "This is the second paramter:$2"
echo "The number of arguments:$#"
echo "Show all arguments:$*"
echo "Show my process ID:$$"
echo "Show the the arguments in quotes:$@"
echo "Did my script go with my errors:$?"
------------------------------------------------------
Brourne shell 有一些预留的环境变量名,这些变量名不能用作其他用途。通常在/etc/profile中建立这些嵌入的环境变量,但也不完全是,这取决于用户自己。以下是嵌入shell变量列表。
CDPATH 改变目录路径变量,保留一系列由冒号隔开的路径名,用于c d命令
EXTINIT 保存使用v i编辑器时的初始化选项
HOME 通常定位于passwd文件的倒数第2列,用于保存用户自身文件。
IFS 用作shell指定的缺省域分隔符。
LOGNAME 变量保存登录名
MAIL 保存邮箱路径名,缺省为/var/spool/mail/<login name>。
MAILCHECK 缺省每60s检查新邮件
MAILPATH 如果有多个邮箱要用到MAILPATH,此变量设置将覆盖MAIL设置。
PATH 保存进行命令或脚本查找的目录顺序
PS1 基本提示符包含shell提示符,缺省对超级用户为#,其他为$。可以使用任何符号作提示符
PS2 为附属提示符,缺省为符号>。PS2用于执行多行命令或超过一行的一个命令。
SHELL 保存缺省shell,通常在/etc/passwd中已设置
TERMINFO 终端初始化变量保存终端配置文件的位置
TERM 保存终端类型
TZ 时区变量保存时区值,只有系统管理员才可以更改此设置
IFS用作shell指定的缺省域分隔符。原理上讲域分隔符可以是任意字符,但缺省通常为空格、新行或tab键。IFS在分隔文件或变量中各域时很有用。下面的例子将IFS设置为冒号,然后echo PATH变量,给出一个目录分隔开来的可读性很强的路径列表。
要设置其返回初始设置:
$IFS=<space><tab>; export IFS
这里<space><tab>为空格和tab键。
还有一些预留的环境变量。其他系统或命令行应用将用到它们。以下是最常用的一些,注意这些值均未有缺省设置,必须显示说明。
EDITOR 设置编辑器,最常用。
PWD 当前目录路径名,用cd命令设置此选项。
PAGER 保存屏幕翻页命令,如pg、more,在查看man文本时用到此功能
MANPATH 保存系统上man文本的目录。目录间用冒号分隔。
LPDEST或PRINTER 保存缺省打印机名,用于打印作业时指定打印机名。

