首页 > 解决方案 > 有什么方法可以从作为 bash 脚本中的参数传递的文本文件中获取和使用变量?

问题描述

我有一个名为 txt 的文件setup.txt,其中包含以下数据:

DSN=ZXP.SOURCE
PATH=/z/zxp/20211015
SCHEMA=ZXP
URL=https://zxp-support.mybluemix.net/contest/4q21/
OUTPUT=OUTPUT(RESULT)
REPORT=q421report

我能够获取一些帮助使用的变量,declare但我无法在脚本下方执行命令

input="$1"

if [ $# -ne 1 ]
  then
    printf "This program takes the input from a file (first argument)\n"
    exit 1
fi
if test -f "$input"; then
    echo "$input exists."
else
    echo "File $input does not exist, or is not a file"
    exit 1
fi
mapfile -t a < $1
declare "${a[@]}" 

db="$DSN"
path="$PATH"
schema="$SCHEMA"
url="$URL"
output="$OUTPUT"
report="$REPORT"

DB2="java com.ibm.db2.clp.db2"
$DB2 -tvf decrypt.sql > parse_decryption1.txt
key=$(python3 decryption.py)
sed -e 's/schema/'"${schema}"'/g;s/pass/'"${key}"'/g' drop3.sql > finaldrop4.sql
$DB2 -tvf finaldrop4.sql > raw_data.txt
python3 drop4.py ${url} > drop5output.txt

我收到以下错误:

./q421drop5.sh: line 30: java: command not found
./q421drop5.sh: line 31: python3: command not found
./q421drop5.sh: line 32: sed: command not found
./q421drop5.sh: line 33: java: command not found
./q421drop5.sh: line 36: python3: command not found
./q421drop5.sh: line 37: cp: command not found

如何访问变量并仍然能够执行下面的其他命令?

标签: bashshellunix

解决方案


推荐阅读