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。我很高兴;我很高兴听到这个消息。