我对shell脚本中的find命令有问题。
我的脚本找到归档,然后解压其中的一些日志,并对结果进行tar,将其移动到更高的级别,并删除在进程中创建的文件。
还有一个问题是,即使脚本没有找到归档或日志,它也会执行所有操作,因此它会创建空的tar。使用名称:
date_patern_patern.tar我试着用if语句或者&&和||运算符来修复它,但是我无法处理它,你能告诉我怎么做吗?
我已经修改了脚本:
#!/bin/bash
printf " -----\nSerch date: $1 \n"
printf "Serch patern: $2 \n"
printf "serch patern: $3 \n -----\n\n"
printf "Serch archives:\n"
mkdir /cc/xx/logs/aaa/envelop/tmp
find archives/ -name "$1_*_messages.tar.gz" -exec cp {} tmp \;
ls -l tmp/$1_*_messages.tar.gz || exit 1
cd tmp
tar -xf $1_*_messages.tar.gz --wildcards --no-anchored "*$2_$3*"
printf "Find envelop:\n"
ls -l alsb-message/ || exit 1
mv alsb-message $1_$2_$3
tar -cvf $1_$2_$3.tar $1_$2_$3
mv $1_$2_$3.tar ..
rm *.gz
rm -R $1_$2_$3
cd ..
rm -r tmp还有另一个问题,我希望我的脚本在搜索时停止,并且在schript搜索时找不到patern:
./serch_script.sh 20151110 patern2 patern3 它既找不到parern2,也找不到patern3,我想让它停止,但它又找到了,.tar,我试着像普拉萨娜说的那样做,但它在这种情况下不起作用,
发布于 2015-12-01 00:39:32
请替换以下行
ls -l tmp/下面这一行
ls -l tmp/$1_*_messages.tar.gz || exit 1基本上,在这段代码中,如果临时目录中没有符合条件的文件,那么您就是在运行exit 1。
https://stackoverflow.com/questions/33998372
复制相似问题