免费注册 查看新帖 |

Chinaunix

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

(`ls -d *`) 裡面沒有檔案就會出錯嗎 ? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-02-25 14:01 |只看该作者 |倒序浏览
#!/bin/csh

set SOURCE_DIR=/raidtds/SMIC/Testing/TDS/temp   
set DEST_DIR1=/raidtds/SMIC/Testing/TDS/tmp1
set DEST_DIR2=/raidtds/SMIC/Testing/TDS/tmp2
cd $SOURCE_DIR
foreach i (`ls -d *`)
    if (! -d $DEST_DIR1/$i) then      
        mkdir $DEST_DIR1/$i
    endif
    if (! -d $DEST_DIR2/$i) then      
        mkdir $DEST_DIR2/$i         
    endif   
    cd $SOURCE_DIR/$i
    foreach j (`ls -d *`)   
      cd $SOURCE_DIR/$i/$j
      if (! -d $DEST_DIR1/$i/$j) then      
         mkdir $DEST_DIR1/$i/$j
      endif
      if (! -d $DEST_DIR2/$i/$j) then      
         mkdir $DEST_DIR2/$i/$j           
      endif
      foreach k (`ls`)
          chmod 777 k
          cp $k $DEST_DIR1/$i/$j/$k
          mv $k $DEST_DIR2/$i/$j/$k
      end   
    end
   
    cd $SOURCE_DIR/$i   
    foreach l (`ls -d *`)   
        rmdir -p $l       
    end
end

/raidtds/SMIC/Testing/TDS/temp 底下有 folder test
可是 test 底下沒有檔案
結果執行時出現
No match
請問如何解決?

论坛徽章:
0
2 [报告]
发表于 2003-02-25 15:34 |只看该作者

(`ls -d *`) 裡面沒有檔案就會出錯嗎 ?

ls -d * 为什么不直接用ls 代替呢?那样应该没有错误吧!

论坛徽章:
0
3 [报告]
发表于 2003-02-25 15:39 |只看该作者

(`ls -d *`) 裡面沒有檔案就會出錯嗎 ?

the same

论坛徽章:
0
4 [报告]
发表于 2003-02-25 15:45 |只看该作者

(`ls -d *`) 裡面沒有檔案就會出錯嗎 ?

先看看是哪一行出的错

论坛徽章:
0
5 [报告]
发表于 2003-02-26 00:09 |只看该作者

(`ls -d *`) 裡面沒有檔案就會出錯嗎 ?

...


No match 这个问题很好解决。

#!/bin/csh

set nonomatch
set SOURCE_DIR=/raidtds/SMIC/Testing/TDS/temp
set DEST_DIR1=/raidtds/SMIC/Testing/TDS/tmp1
set DEST_DIR2=/raidtds/SMIC/Testing/TDS/tmp2

就可以了。

然而,你会发现,直接过滤掉 STDERR 上
*: No such file or directory
这个错误信息很麻烦。

在 sh, ksh 下就是一个

  1. for i in `ls test/* 2> /dev/null`
  2.     do echo $i
  3. done
复制代码


的工作,在 csh 中费劲死了,

  1. set TTY = `tty`
  2. set list =  `( ls  test/* > $TTY ) >& /dev/null`

  3. foreach i ( $list )
  4.   echo $i
  5. end
复制代码

论坛徽章:
0
6 [报告]
发表于 2003-02-26 10:04 |只看该作者

(`ls -d *`) 裡面沒有檔案就會出錯嗎 ?

Dear 红袖添香:
        Thank you very much!

论坛徽章:
0
7 [报告]
发表于 2003-02-26 10:14 |只看该作者

(`ls -d *`) 裡面沒有檔案就會出錯嗎 ?

Dear 红袖添香:
        但是
     set TTY = `tty`
        set list =  `( ls  test/* > $TTY ) >& /dev/null`

        foreach i ( $list )
            echo $i
        end
        要加在程序的何處,我試過加在最前面可是一樣出現
     *: No such file or directory
        程序要如何改?
        Thanks

论坛徽章:
0
8 [报告]
发表于 2003-02-26 23:05 |只看该作者

(`ls -d *`) 裡面沒有檔案就會出錯嗎 ?

...

不应该呀。

而且我在 Solaris 和 IRIX 下试过,不会出现错误信息了。

有没有输入错误呀?比如把  >&  写成了 >

论坛徽章:
0
9 [报告]
发表于 2003-02-27 08:37 |只看该作者

(`ls -d *`) 裡面沒有檔案就會出錯嗎 ?

dear 红袖添香  :
        i know ,and thanks!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP