linux - 读取txt文件并将值解析为bash脚本

标签 linux bash variables loops while-loop

我有以下 bash 脚本:

#!/bin/bash

filename='config.txt'

while filename = read -r line do
        for file in $(find /home/user/ftpuser -maxdepth 1 -name "*.[ew]ar" -type f); do
        /apps/oracle/jrockit/4.1.0-1.6.0_37-R28.2.5-x86_64/bin/java -jar ../windup-cli-0.6.8/windup-cli.jar -javaPkgs com.lib - input ../ftpuser/ -output ../reports/ "${file}"
            cp "${file}" /home/user/ftpuser/scanned/
        done < "$filename"
        sleep 60
done

该脚本需要在一个目录中查找两种类型的文件。 .ear 和 .war 文件。一旦完成,它就会执行一个命令,该命令对我们之前在名为/reports 的目录中找到的文件进行报告。下一步是将我们在第一步中找到的所有文件复制到名为 Scand 的目录中。我的问题集中在我正在执行的用于生成报告的命令。在此命令中,有一个 -javaPkgs com.lib。我需要从配置文件中读取这个值。脚本需要从配置文件中读取值并将它们分配给脚本,因此每次我们更改配置文件中的值时,我们都可以使用不同的值执行脚本。我的问题是我该怎么做?我在上面尝试过做一些事情,但它不起作用。

下面您还可以看到配置文件。

配置.txt

targetHostName=10.125.162.132
packages=com.ibm,com.jboss   
path=/home/user/ftpuser/reports
username=root
password=root

最佳答案

以下内容将为您提供您想要报告的软件包的列表:

grep "^packages" config.txt | cut -d= -f2 | tr ',' ' '

基于此,您可以循环查找列表中的值:

filename="config.txt"
for i in $(grep "^packages" $filename | cut -d= -f2 | tr ',' ' '); do
  for file in $(find /home/user/ftpuser -maxdepth 1 -name "*.[ew]ar" -type f); do
    echo /apps/oracle/jrockit/4.1.0-1.6.0_37-R28.2.5-x86_64/bin/java -jar ../windup-cli-0.6.8/windup-cli.jar -javaPkgs ${i} - input ../ftpuser/ -output ../reports/ "${file}"
    cp "${file}" /home/user/ftpuser/scanned/
  done
done

关于linux - 读取txt文件并将值解析为bash脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18715630/

相关文章:

javascript - 添加事件监听器的最佳实践(javascript、html)

php - 变量的乘法和除法

linux - 如何找到旧版本 GLIB 的安装位置?

linux - Pip 没有链接到我升级的 Python 版本。包 python3-pip 不可用,但被另一个包引用

string - Bash 在将字符串转换为参数时不解析引号

c++ - Arduino/C++ 交叉函数变量

java - 使用 Java 通过 inode 查找文件

linux - 想要使用 awk 根据顺序切换 2 个值

c - Bash 脚本中的流程控制和返回值

linux - 不符合我条件的 lftp 镜像目录