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

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        命令收到信号而死亡

你可能感兴趣的:(shell学习笔记-命令行参数的处理)