免费注册 查看新帖 |

Chinaunix

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

[系统管理] shell if 条件语句可以带通配符*吗? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-10-25 11:08 |只看该作者 |倒序浏览
如下代码运行时报错,高手帮忙看看撒:

bash-3.00$ more test.sh

#!/bin/bash
. /store/abrun_text/qa_test/GMI_Events_Test/itf_frame.sh

# Step3, clean some folders
if [ -f /store/abrun_text/hslocal/ab_work_dir/RTSearch/*/* ]
then
        echo "`date '+%m/%d/%y %H:%M:%S,'` fail to clean the abinitio working folder, so quit the testing"

        rm /store/abrun_text/hslocal/ab_work_dir/RTSearch/*/*
        if [ #? -ne 0 ]
        then
                echo "`date '+%m/%d/%y %H:%M:%S,'` fail to clean the abinitio working folder, so quit the testing"
                exit 1
        fi
fi
bash-3.00$ ./test.sh
./test.sh: line 6: [: too many arguments
bash-3.00$ sh +x test.sh
10/25/12 03:08:04, fail to clean the abinitio working folder, so quit the testing
rm: /store/abrun_text/hslocal/ab_work_dir/RTSearch/filings/test1 is a directory
rm: /store/abrun_text/hslocal/ab_work_dir/RTSearch/filings/test2 is a directory
test.sh: test: ] missing
bash-3.00$

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
2 [报告]
发表于 2012-10-25 11:11 |只看该作者
-f /store/abrun_text/hslocal/ab_work_dir/RTSearch/*/*

这个你要做什么?判断某个目录是否存在?

rm /store/abrun_text/hslocal/ab_work_dir/RTSearch/*/*
这个可以用下面这个代替。
rm /store/abrun_text/hslocal/ab_work_dir/RTSearch/*

论坛徽章:
0
3 [报告]
发表于 2012-10-25 12:12 |只看该作者
多谢2楼的回复。

/store/abrun_text/hslocal/ab_work_dir/RTSearch/下好几个目录,我是想看看这些目录下面有没有文件存在,有的话我要删除,但是我并不像删除/store/abrun_text/hslocal/ab_work_dir/RTSearch/*, 所以就用了/store/abrun_text/hslocal/ab_work_dir/RTSearch/*/*。
如果用rm /store/abrun_text/hslocal/ab_work_dir/RTSearch/*就会把所有的文件都清除了。

   

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
4 [报告]
发表于 2012-10-25 12:15 |只看该作者
回复 3# wl189


    用 find 吧。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
5 [报告]
发表于 2012-10-25 13:34 |只看该作者
wl189 发表于 2012-10-25 12:12
多谢2楼的回复。

/store/abrun_text/hslocal/ab_work_dir/RTSearch/下好几个目录,我是想看看这些目录下 ...
也就是不删除空目录?find -exec rm {} \;就可以了。

论坛徽章:
0
6 [报告]
发表于 2012-10-25 15:16 |只看该作者
多谢,搞定了,用了个循环

strWorkFolder=/store/abrun_text/hslocal/ab_work_dir/RTSearch/

for i in $strWorkFolder/*
                        do
                                if [ -d $i ]
                                then
                                        cd $i
                                        rm -rf *
                                                 if [ $? -ne 0 ]
                                then
                echo "`date '+%m/%d/%y %H:%M:%S,'` fail to clean the abinitio working folder, so quit the testing"
                exit 1
                                fi
                                fi
                        done
                       

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
7 [报告]
发表于 2012-10-25 15:24 |只看该作者
wl189 发表于 2012-10-25 15:16
多谢,搞定了,用了个循环

strWorkFolder=/store/abrun_text/hslocal/ab_work_dir/RTSearch/
要是有多层目录就不好搞了。

论坛徽章:
0
8 [报告]
发表于 2012-10-25 16:49 |只看该作者
只能搞个多重循环,因为我不想删除中间空目录,只想删除最里层目录里面的文件
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP