免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1895 | 回复: 7
打印 上一主题 下一主题

一段脚本,帮大家理解几个shell小概念 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-07-30 19:11 |只看该作者 |倒序浏览
self uderstanding:
脚本运行:./tarray "sed -i '/A=(.*eth1/s/eth1\( \|\)//g' \$0"

脚本内容:
---------------------------------------------------------

#!/bin/bash
#tarray

A=(eth0 eth1 eth2 eth3)

index=0
echo "index is $index"
while [ ${index} -lt ${#A
  • } ]
    do
            #echo "A[$(($index+1))] is{A[$(($index+1))]}"
            echo "A[$index] is{A[$index]}"

            index=$(($index+1))
    done

    echo $1
    eval $1

    #sed -i '/A=(.*/s///g' $0

    ----------------------------------------------------------------------


    注解:
    [1]参数"sed -i '/A=(.*eth1/s/eth1\( \|\)//g' \$0"用引号包含
    [2]脚本运行期间可以修改自己本身。
    [3]如果将"sed -i '/A=(.*eth1/s/eth1\( \|\)//g' \$0"放在脚本最后,则也会将自己替换掉!
    [4]脚本如果将eval $1改为$1,则$1之后扩展一次,不会再次进行扩展其中的$0
    [5]需要将"sed -i '/A=(.*eth1/s/eth1\( \|\)//g' \$0"中$0写为\$0,否则第一次就进行了扩展,再次扩展后出现
    sed -i '/A=(.*eth1/s/eth1\( \|\)//g' bash
    sed: can't read bash: No such file or directory


    另外注解5出现原因我也无法解析,有高手帮忙解析一下。
  • 论坛徽章:
    8
    摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
    2 [报告]
    发表于 2008-07-30 19:52 |只看该作者
    [5]的解释请参13问

    论坛徽章:
    0
    3 [报告]
    发表于 2008-07-30 19:56 |只看该作者

    论坛徽章:
    0
    4 [报告]
    发表于 2008-07-31 09:42 |只看该作者
    谢谢楼上的。十三问看过,没有发现答案,具体是哪条?

    论坛徽章:
    23
    15-16赛季CBA联赛之吉林
日期:2017-12-21 16:39:27白羊座
日期:2014-10-27 11:14:37申猴
日期:2014-10-23 08:36:23金牛座
日期:2014-09-30 08:26:49午马
日期:2014-09-29 09:40:16射手座
日期:2014-11-25 08:56:112015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:0315-16赛季CBA联赛之山东
日期:2017-12-21 16:39:1915-16赛季CBA联赛之广东
日期:2016-01-19 13:33:372015亚冠之山东鲁能
日期:2015-10-13 09:39:062015亚冠之西悉尼流浪者
日期:2015-09-21 08:27:57
    5 [报告]
    发表于 2008-07-31 09:44 |只看该作者
    原帖由 yifei429 于 2008-7-31 09:42 发表
    谢谢楼上的。十三问看过,没有发现答案,具体是哪条?


    4) " "(雙引號) 與 ' '(單引號)差在哪?

    论坛徽章:
    0
    6 [报告]
    发表于 2008-07-31 09:54 |只看该作者
    哦,我没有说清楚
    我想知道的是
    sed -i '/A=(.*eth1/s/eth1\( \|\)//g' bash
    最后为什么会出现bash??

    论坛徽章:
    23
    15-16赛季CBA联赛之吉林
日期:2017-12-21 16:39:27白羊座
日期:2014-10-27 11:14:37申猴
日期:2014-10-23 08:36:23金牛座
日期:2014-09-30 08:26:49午马
日期:2014-09-29 09:40:16射手座
日期:2014-11-25 08:56:112015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:0315-16赛季CBA联赛之山东
日期:2017-12-21 16:39:1915-16赛季CBA联赛之广东
日期:2016-01-19 13:33:372015亚冠之山东鲁能
日期:2015-10-13 09:39:062015亚冠之西悉尼流浪者
日期:2015-09-21 08:27:57
    7 [报告]
    发表于 2008-07-31 09:57 |只看该作者
    原帖由 yifei429 于 2008-7-31 09:54 发表
    哦,我没有说清楚
    我想知道的是
    sed -i '/A=(.*eth1/s/eth1\( \|\)//g' bash
    最后为什么会出现bash??


    在命令行,直接 echo $0

    论坛徽章:
    0
    8 [报告]
    发表于 2008-07-31 09:59 |只看该作者
    哦,明白了!
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则 发表回复

      

    北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
    未成年举报专区
    中国互联网协会会员  联系我们:huangweiwei@itpub.net
    感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

    清除 Cookies - ChinaUnix - Archiver - WAP - TOP