我對 bash 腳本很陌生,所以如果我在這里問一些愚蠢的問題,請把我鏈接到地方!
我正在嘗試撰寫一個 bash 腳本test-bash.sh,它將引數從 txt 檔案test-text.txt傳遞??到 .yml 檔案test-yaml.yml,用作子目錄和子目錄引數(我的意思是例如/path/to/XXXX/child/,/path/to/XXXX其中 XXXX 是從 .sh 腳本傳遞的引數。
我真的很難找到一種方法來做到這一點,所以這里有一個我想要實作的小例子:
測驗文本.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
'~' 符號中的代碼是偽代碼。
我在 using 上找到了這個頁面export,這會在上面的回圈案例中作業,還是我用這個樹錯了?
非常感謝您對此的任何幫助,我真的很感激。
uj5u.com熱心網友回復:
envsubst能解決你的問題嗎?
例如,如果我有一個test-yaml.yml包含$foo:
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'
您可以通過以下方式將 inside 替換為$fooshelltest-yaml.yml變數:$fooenvsubst
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'
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/465457.html
