linux - Bash 有条件 grep 未产生预期输出

标签 linux bash shell

#!/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/

相关文章:

linux - AWK 在 Bash 脚本中不起作用

java - exec 命令在 Linux 服务器上不起作用

c++ - 如何在 Linux CentOS 上更改默认 GCC 编译器以与 MPI 一起使用

linux - shell脚本单独列出目录中的文件名并重命名

bash - 如何在 find -exec 语句中使用 >> ?

node.js - 如何从 bash 脚本运行 NVM 命令

c - 在 C 中使用 UDP 套接字传输文件

linux - Bash循环遍历包括隐藏文件的目录

shell - 如何在shell脚本中保留$@中的双引号?

linux - 如何在不到达那里的情况下从不同的目录运行 Linux shell 命令?