#!/bin/bash
projectsForArchive=/opt/tibco/run/tibbpma/log,/opt/tibco/run/tibbpmb/log,/opt/tibco/run/tibbpmd/log
archiveScriptLogsDir=/opt/tibco/scripts/LogsArchival/ArchiveLogs
backupScriptLogsDir=/opt/tibco/scripts/LogsArchival/BackupLogs
dir=$(echo $projectsForArchive | tr ",""\n")
d=$(ls/opt/tibco/run/| grep tibbpmd)
回显$d
对于 i find $dir -maxdepth 1 -iname "*.log.*"
做
g=${i}
如果 [ $(ls/opt/tibco/run/| grep tibbpma ) = "tibbpma"];那么
mv "$i" "${g}_tibbpma_`hostname`_`date +%Y-%m-%d-%H-%M-%s`"
elif [ $(ls/opt/tibco/run/| grep tibbpmd ) = "tibbpmd"];然后
mv "$i" "${g}_$d_`hostname`_`date +%Y-%m-%d-%H-%M-%s`"
其他
mv "$i" "${g}_`hostname`_`date +%Y-%m-%d-%H-%M-%s`"
fi
完成
对于 i find $dir -maxdepth 1 -iname "*.log.*"
回显$i
mv $i $archiveScriptLogsDir
完成
输出如下,这是不正确的
a.log.1.tibbpma.xxxxx
a.log.2.tibbpma.xxxxx
d.log.1.tibbpma.xxxxx
d.log.2.tibbpma.xxxxx
以及下面的正确输出
a.log.1.tibbpma.xxxxx
a.log.2.tibbpma.xxxxx
d.log.1.tibbpmd.xxxxx
d.log.2.tibbpmd.xxxxx
请帮忙
最佳答案
根据评论中提问者的ls/opt/tibco/run/
的输出,它总是包含“tibbpma”,然后是第一个if
语句中的条件
if [ $(ls /opt/tibco/run/ | grep tibbpma ) = "tibbpma" ];then
也永远是真的。这就是为什么这个脚本的输出只包含“tibbpma”。
关于linux - Bash 有条件 grep 未产生预期输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22088247/