Chinaunix首页 | 论坛 | 博客
  • 博客访问: 261704
  • 博文数量: 93
  • 博客积分: 3001
  • 博客等级: 中校
  • 技术积分: 1050
  • 用 户 组: 普通用户
  • 注册时间: 2009-07-11 13:20
文章分类

全部博文(93)

文章存档

2011年(1)

2009年(92)

我的朋友

分类: LINUX

2009-07-11 18:00:49

$*$@扩展的结果几乎完全一样,唯一不同的是当它们被括在双引号中时,$*的值是一个字符串,而$@的值则是一组相互独立的词。

范例14-35

(脚本)

     #!/bin/bash

     # Scriptname: greet

1    for name in $*        # same as for name in $@

2    do

         echo Hi $name

3    done

(命令行)

$ greet Dee Bert Lizzy Tommy

Hi Dee

Hi Bert

Hi Lizzy

Hi Tommy

说明

1. $*$@被展开后是一个所有位置参量的列表,本例中,它们被展开后的结果就等于从命令行传入的参数:DeeBertLizzyTommy。列表中的每个名字被依次赋给for循环的变量name

2. 执行循环体中的命令,直到列表为空。

3. 关键字done标志循环体的结束。

范例14-36

(脚本)

     #!/bin/bash

     # Scriptname: permx

1    for file         # Empty wordlist

     do

2      if [[ -f $file && ! -x $file ]]

       then

3             chmod +x $file

              echo $file now has execute permission

       fi

     done

(命令行)

4   $ permx *

    addon now has execute permission

    checkon now has execute permission

    doit now has execute permission

说明

1. 如果没有为for循环提供参数列表,它就对所有位置参量进行遍历。这行等同于for file in $*命令。

2. 文件名将来自命令行。shell将星号(*)扩展为当前工作目录中所有的文件名。如果该文件是一个没有执行权限的文本文件,就执行3的命令。

3. 给每个被处理的文件加上执行权限。

4. shell把命令行里的星号作为通配符进行求值,将它替换为当前目录下的所有文件。shell把这些文件作为参数传给脚本permx

 

阅读(344) | 评论(0) | 转发(0) |
0

上一篇:标准IO和重定向

下一篇:函数

给主人留下些什么吧!~~