簡體   English   中英

讀取txt文件並將值解析為bash腳本

[英]Read txt file and parse the values to bash script

我有以下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。 我需要從配置文件中讀取此值。腳本需要從配置文件中讀取值並將它們分配給腳本,因此,每次更改配置文件中的值時,都可以使用不同的值執行腳本。 我的問題是我該怎么做? 我已經在上面嘗試做一些事情,但是沒有用。

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

config.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

這是我如何使用它的方式:

#!/bin/bash

config_file='./config.txt'  ## If you want to pass your configuration as an argument, use config_file=$1

. "$config_file"

while read -r file 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/
    sleep 60
done < <(exec find /home/user/ftpuser -maxdepth 1 -name '*.[ew]ar' -type f)

該腳本將讀取config_file.txt作為另一個為變量分配值的源文件。 這樣,您就可以將這些變量用作$targetHostName$packages$path$username$password

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM