我怎麼能使用shell腳本來分析從一個配置文件,這樣的「關鍵詞」:使用shell腳本解析多行值
keyword1='aaa
bbb
ccc
'
keyword2='ddd'
有此值的多行,我想得到它的每一行。
--------------------- updates
對不清楚的描述。 正如我們所看到的,這個配置文件的格式就像「key = value」一樣,我可以輕鬆解析具有單個值的關鍵字的值。但我不知道如何解析具有多個值的關鍵字,例如keyword1如上所述。
我怎麼能使用shell腳本來分析從一個配置文件,這樣的「關鍵詞」:使用shell腳本解析多行值
keyword1='aaa
bbb
ccc
'
keyword2='ddd'
有此值的多行,我想得到它的每一行。
--------------------- updates
對不清楚的描述。 正如我們所看到的,這個配置文件的格式就像「key = value」一樣,我可以輕鬆解析具有單個值的關鍵字的值。但我不知道如何解析具有多個值的關鍵字,例如keyword1如上所述。
你必須有config.sh文件「關鍵字」,在它定義的變量是多行變量如下
config.sh
keyword='aaa
bbb
ccc '
那麼你可以嘗試類似下面通過每個值都是一個函數參數。
#!/bin/bash
source config.sh
function_call()
{
# function logic
echo $1
}
for i in $keyword
do
function_call $i
done
如果你做「echo $ keyword」,那麼你將得到aaa bbb ccc,所以可以在for循環中直接訪問它們。
鑑於此文件的key=value
:
$ cat config.txt
keyword1='aaa
bbb
ccc
'
keyword2='ddd'
您可以使用source
的鍵作爲bash的變量相關聯:
$ source config.txt
$ echo "$keyword2"
ddd
$ echo "$keyword1"
aaa
bbb
ccc
現在,如果你想要做的事與$keyword1
使用while
環路逐行讀取該變量:
while read -r line; do
echo ">$line<"
done <<< "$keyword1"
>aaa<
>bbb<
>ccc<
><
請注意,最後有一條空行,因爲這是您在示例中的方式。
你想讓每一行都在不同的變量中嗎?或者他們全部被分配給關鍵字? – Vinny
感謝您的迴應,我希望每一行都在不同的變量中,然後我將它們分別發送給一個函數。我想要一個循環中的進程 – aysl
配置文件是否有效的shell語法?你可以做'source config.file;回聲「$關鍵字」'? –