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

这个程序怎么理解?
...全文
185 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
masmaster 2010-09-17
  • 打赏
  • 举报
回复
FIFO
  • 打赏
  • 举报
回复
参数相当于一个数组,每次执行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

4,465

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧