Bash函数将变量值写入带有变量名称的文本文件

Bash函数将变量值写入带有变量名称的文本文件,bash,Bash,我目前正在使用一个bash脚本,它使用文本文件将变量传递给一些遗留代码 脚本通过1)创建前缀为lp_的变量,2)然后将这些参数的值保存为lp_run_目录中的文本文件,来设置一些传统程序(lp)的变量值。下面是一个示例文件: #!/bin/bash #Set the parameters here lp_parameter_a=(0.2 0.4 1) lp_parameter_b="TRUE" lp_parameter_c=0 #Set the working directory here

我目前正在使用一个
bash
脚本,它使用文本文件将变量传递给一些遗留代码

脚本通过1)创建前缀为
lp_
的变量,2)然后将这些参数的值保存为
lp_run_目录中的文本文件,来设置一些传统程序(lp)的变量值。下面是一个示例文件:

#!/bin/bash

#Set the parameters here
lp_parameter_a=(0.2 0.4 1)
lp_parameter_b="TRUE"
lp_parameter_c=0

#Set the working directory here (put pwd for generality)
lp_run_directory=$(pwd)"/"

#Write parameter values in the directory
echo ${lp_parameter_a[@]} > $lp_run_directory"parameter_a.txt"
echo ${lp_parameter_b[@]} > $lp_run_directory"parameter_b.txt"
echo ${lp_parameter_c[@]} > $lp_run_directory"parameter_c.txt"

#Run program that depends on parameter values here...


lp_run_directory ="/users/ss/"
echo ${lp_parameter_a[@]} > lp_run_directory"parameter_a.txt"
echo ${lp_parameter_b[@]} > lp_run_directory"parameter_b.txt"
这很好,但涉及大量硬编码文本。我想知道是否有人可以帮我定义一个函数,可以以某种方式自动化这项工作


我不确定在bash中可以实现什么,但理想的解决方案是使用一个函数,该函数采用我的工作区中所有变量的名称,这些变量以
lp\u
开头,然后将所有变量保存到
lp\u运行目录

下面是一个采用输出目录的
bash
函数。和变量前缀作为其参数,并将每个匹配变量的值输出到输出目录中以该变量命名的文件(sans prefix)

varsToFiles(){
本地outDir=$1前缀=$2名称fname rest isArray
而IFS='='读取-r name rest;do
#确定输出文件名-不带前缀的变量名。
fname=${name#$prefix}
#确定变量是否为数组。
[[$(声明-p“$name”| cut-d'''-f2)=*a*]&&isArray=1 | | isArray=0
((isArray))&&name=“$name[@]”
#输出变量值并发送到输出文件。
echo“${!name}”>“$outDir/$fname”

done<在bash文档中间接查找变量。可以发布一个示例文件吗?
lp_参数_b
lp_参数_c
不是数组;为什么要像这样索引它们?@chepner是这样。我这样做是因为它允许我在标量值或顶部的数组之间更改lp_参数_b/lp_参数_c不必更改文件底部的“写入文本”。谢谢!有两个问题:1)对于数组变量,函数按其在文本文件中的方式打印数组,但文件名的末尾有一个“[@]”;2)是否有方法从文本文件名的名称中去掉“前缀”(以便变量“lp_parameter_a”被打印到“$outDir/”'parameter_a'Awesome中。这很好用。非常感谢你解释一切!BerkU。我很高兴;我很高兴听到这个消息。