Chinaunix

标题: 还有这段 [打印本页]

作者: lb_20016    时间: 2003-02-27 23:42
标题: 还有这段
while [$# -ne 0]
do
case $1 in
-*)
opts="$opts $1"
;;
*)
args="$args $1"
;;
esac
shift
done
这段程序中opts="$opts $1"是什么意思,还有两个;;是固定格式吗?
另一个问题就是在shell函数中,函数最后的exit l中的参数l是什么意思?
命令ll又是什么意思?请大虾多多指教,谢谢!!!
作者: 红袖添香    时间: 2003-02-28 01:41
标题: 还有这段
...

> 这段程序中opts="$opts $1"是什么意思,还有两个;;是固定格式吗?

assignment statement

> 另一个问题就是在shell函数中,函数最后的exit l中的参数l是什么意思?

exit code

> 命令ll又是什么意思?请大虾多多指教,谢谢!!!

an alias of 'ls -l', i guess
作者: lb_20016    时间: 2003-02-28 08:31
标题: 还有这段
原帖由 "红袖添香" 发表:
...

> 这段程序中opts="$opts $1"是什么意思,还有两个;;是固定格式吗?

assignment statement

assignment statement?能再具体点吗?把带参数的某个命令再赋给它自己本身?
作者: biansj    时间: 2003-02-28 09:37
标题: 还有这段

  1. #!/usr/bin/ksh
  2. #aa.sh
  3. while [ $# -ne 0 ]
  4. do
  5.     case $1 in
  6.     -*)
  7.         opts="$opts $1"
  8.         ;;
  9.     *)
  10.         args="$args $1"
  11.         ;;
  12.     esac
  13.     shift
  14. done
  15. echo $opts
  16. echo $args
复制代码

代码的主要意思是把-*的参数和不是-*的参数分开,分别放到opts和args中
如:执行aa.sh -thello -pworld hello world
将输出:
-thello -pworld
hello world
作者: llc107    时间: 2003-02-28 09:42
标题: 还有这段
原帖由 "lb_20016" 发表:

assignment statement?能再具体点吗?把带参数的某个命令再赋给它自己本身?


i think,
opts = a
$1 = c

opts ="$opts $1"


echo $opts

%a c
作者: lb_20016    时间: 2003-02-28 16:03
标题: 还有这段
原帖由 "红袖添香" 发表:
...

> 这段程序中opts="$opts $1"是什么意思,还有两个;;是固定格式吗?

assignment statement

assignment statement中文是什么意思啊,opts="$opts $1"这里我还是不太懂,能解释得再清楚一点吗?
作者: bzzyg    时间: 2003-02-28 16:27
标题: 还有这段
请高人作一下 解释.我看了也头晕!
作者: lb_20016    时间: 2003-02-28 17:15
标题: 还有这段
在opts="$opts $1"中,"$opts $1"是固定的输出参数的命令格式吗?能把双引号改成单引号吗?
作者: didikei    时间: 2003-02-28 18:48
标题: 还有这段
[quote]原帖由 "lb_20016"]在opts="$opts $1"中,"$opts $1"是固定的输出参数的命令格式吗?能把双引号改成单引号吗?[/quote 发表:
1.方括弧旁边要加上空格
2. $1代表第1个参数,$2代表第2个参数,余此类推;$# 代表参数个数
每做一次shift,$#递减1,并且所有的参数左移,也就是原来的$2变成现在的$1,余此类推.
3. 所以正如biansj所讲,此代码是想将两类参数分开:
    带-号的赋给opts;不带-号的赋给args.
4. shell中经常需要判断上一个shell或上一条命令的执行情况,$?即存放此值,一般0表示执行正确,非0表示其他情况。所以exit 后跟一个值退出后,此时根据 $? 就能知道上一个shell的执行情况。
5. 假定有两个shell: test1.sh test2.sh,则 test1.sh || test2.sh意思如下: 当test1.sh的返回值为非0 则继续做test2.sh; 当test1.sh的返回值为0时则不做test2.sh。
test1.sh && test2.sh与此相反.




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2