将 bash 脚本变量传递给 .yml 文件以用作子目录和子目录
Passing bash script variables to .yml file for use as child and subdirectories
我是 bash 脚本编写的新手,所以如果我在这里问愚蠢的问题,请 link 告诉我一些地方!
我正在尝试编写 bash 脚本 test-bash.sh
,它将参数从 txt 文件 test-text.txt
传递到 .yml 文件 test-yaml.yml
,以供使用作为子目录和子目录参数(我的意思是例如 /path/to/XXXX/child/
和 /path/to/XXXX
其中 XXXX 是从 .sh 脚本传递的参数。
我真的很难想出一个办法来做到这一点,所以这里有一个我正在努力实现的小例子:
测试-text.txt:
folder1
folder2
测试-yaml.yml:
general:
XXXX: argument_from_bash_script
rawdatadir: '/some/data/directory/XXXX'
input: '/my/input/directory/XXXX/input'
output: '/my/output/directory/XXXX/output'
测试-bash.sh:
#!/bin/bash
FILENAME="test-text.txt"
FOLDERS=$(cat $FILENAME)
for FOLDER in $FOLDERS
do
~ pass FOLDER to .yml file as argument ~
~ run stuff using edited .yml file ~
done
其中用'~'符号括起来的代码是伪代码。
我在使用 export
时发现了 this page,这在上面的循环情况下是否有效,还是我用这个找错树了?
非常感谢您对此提供的任何帮助,我真的很感激。
envsubst
能解决您的问题吗?
例如,如果我有一个包含 $foo
:
的 test-yaml.yml
cat test-yaml.yml
输出:
general:
$foo: argument_from_bash_script
rawdatadir: '/some/data/directory/$foo'
input: '/my/input/directory/$foo/input'
output: '/my/output/directory/$foo/output'
您可以将 test-yaml.yml
中的 $foo
替换为 shell 变量 $foo
通过 envsubst
:
export foo=123
envsubst < test-yaml.yml
输出:
general:
123: argument_from_bash_script
rawdatadir: '/some/data/directory/123'
input: '/my/input/directory/123/input'
output: '/my/output/directory/123/output'
我是 bash 脚本编写的新手,所以如果我在这里问愚蠢的问题,请 link 告诉我一些地方!
我正在尝试编写 bash 脚本 test-bash.sh
,它将参数从 txt 文件 test-text.txt
传递到 .yml 文件 test-yaml.yml
,以供使用作为子目录和子目录参数(我的意思是例如 /path/to/XXXX/child/
和 /path/to/XXXX
其中 XXXX 是从 .sh 脚本传递的参数。
我真的很难想出一个办法来做到这一点,所以这里有一个我正在努力实现的小例子:
测试-text.txt:
folder1
folder2
测试-yaml.yml:
general:
XXXX: argument_from_bash_script
rawdatadir: '/some/data/directory/XXXX'
input: '/my/input/directory/XXXX/input'
output: '/my/output/directory/XXXX/output'
测试-bash.sh:
#!/bin/bash
FILENAME="test-text.txt"
FOLDERS=$(cat $FILENAME)
for FOLDER in $FOLDERS
do
~ pass FOLDER to .yml file as argument ~
~ run stuff using edited .yml file ~
done
其中用'~'符号括起来的代码是伪代码。
我在使用 export
时发现了 this page,这在上面的循环情况下是否有效,还是我用这个找错树了?
非常感谢您对此提供的任何帮助,我真的很感激。
envsubst
能解决您的问题吗?
例如,如果我有一个包含 $foo
:
test-yaml.yml
cat test-yaml.yml
输出:
general:
$foo: argument_from_bash_script
rawdatadir: '/some/data/directory/$foo'
input: '/my/input/directory/$foo/input'
output: '/my/output/directory/$foo/output'
您可以将 test-yaml.yml
中的 $foo
替换为 shell 变量 $foo
通过 envsubst
:
export foo=123
envsubst < test-yaml.yml
输出:
general:
123: argument_from_bash_script
rawdatadir: '/some/data/directory/123'
input: '/my/input/directory/123/input'
output: '/my/output/directory/123/output'