shell里的shift问题

L_thread 2010-09-17 05:37:48
while [ $# -gt 0 ] ; do
case "$1" in
--) shift ; break ;;
-a) shift ; APPEND=yes ;;
-n) shift ; BOARD_NAME="${1%%_config}" ; shift ;;
*) break ;;
esac
done

这个程序怎么理解?
...全文
108 点赞 收藏 8
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
masmaster 2010-09-17
FIFO
回复
Ramonlc 2010-09-17
参数相当于一个数组,每次执行shift,数据就会从右至左减1
回复
freetstar 2010-09-17
[Quote=引用 5 楼 steptodream 的回复:]

引用 4 楼 l_thread 的回复:

--)
-a)
*)
这个不理解

这不就是case的条件吗 哪个不理解?
--) 匹配--
-a) 匹配-a
*) 相当于别的语言的条件分支的default
[/Quote]
我也来参加了,主席V5
这些就是匹配条件的
回复
steptodream 2010-09-17
[Quote=引用 4 楼 l_thread 的回复:]

--)
-a)
*)
这个不理解
[/Quote]
这不就是case的条件吗 哪个不理解?
--) 匹配--
-a) 匹配-a
*) 相当于别的语言的条件分支的default
回复
L_thread 2010-09-17
--)
-a)
*)
这个不理解
回复
justkk 2010-09-17
哈哈,一会就走
主席再见..
回复
steptodream 2010-09-17
[Quote=引用 1 楼 justkk 的回复:]

shift就是用掉一个位置参数,那么原来的$2就变成现在的$1了
看下面这个例子,脚本中只使用$1,但是能显示所有的命令行参数
while [ $# -ne 0 ]
do
echo $1
shift
done
[/Quote]
恩 怎么还不去吃饭 把这个问题留给我
回复
justkk 2010-09-17
shift就是用掉一个位置参数,那么原来的$2就变成现在的$1了
看下面这个例子,脚本中只使用$1,但是能显示所有的命令行参数
while [ $# -ne 0 ]
do
echo $1
shift
done
回复
相关推荐
发帖
Linux_Kernel
创建于2007-08-27

4152

社区成员

Linux/Unix社区 内核源代码研究区
申请成为版主
帖子事件
创建了帖子
2010-09-17 05:37
社区公告
暂无公告