您的位置:首页 > 运维架构 > Shell

shell学习笔记-命令行参数的处理

2011-03-12 23:45 190 查看
1、shift 移开第一个参数

2、$# 提供传递到shell脚本或函数的参数总数。
while [$# != 0] 以shift逐渐减少$#,循环将会终止
do
case $1 in

esac
shift
done

3、$*, $@
一次表示所有的命令行参数。这两个参数可用来把命令行参数传递给脚本或者函数所执行的程序。

“$*”将所有的命令行参数视为单个字符串,等同于“$1 $2 ...”.
$IFS的第一个字符用来做为分隔字符,以分隔不同的值来建立字符串
例如:
IFS="123"
printf "The arguments were %s/n" "$*"
$./aa a b c
输出:The arguments were a1b1c

$@
将所有的命令行参数视为单独的个体也就是单独的字符串。等同于“$1” "$2" ...
printf "The arguments were %s/n" "$@"
$./aa a b c
输出:
The arguments were a
The arguments were b
The arguments were c

4、POSIX内置shell变量
# 目前进程的参数个数。
@ 传递给当前进程的命令行参数,至于双引号内,会展开为个别的参数。
* 当前进程命令行参数。置于双引号内,则展开为一单独参数。
-(连字号) 在引用时给予Shell的选项。
? 前一命令的退出状态。 echo $? 输出退出码。
$ shell进程的进程编号(process ID)。
0 shell程序的名称。
! 最近一个后台命令的进程编号,以此方式存储进程编号,可通过wait命令以供稍后使用。
ENV 一旦使用,则仅用于交互式shell中,$ENV的值是可展开的擦书。结果应为要读取和在启动时要执行的一个文件的完整路径名称。这是一个XSI必需的变量。
HOME 根(登录)目录
IFS 内部字段分隔器;例如作为单词分隔器的字符列表。一般设为空格、制表符(Tab),以及换行符(newline)。
LANG 当前locale的默认名称;其他的LC_*变量会覆盖其值。
PATH 命令的查找路径。
PPID 父进程的进程编号。

4、$? 最后一次退出的状态码
0 命令成功退出
>0 重定向或单词展开期间失败
1-125 命令不成功的退出
126 命令找到了,单文件无法执行
127 命令找不到
128 命令收到信号而死亡
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: