2017-08-11 112 views
-1

我怎麼能使用shell腳本來分析從一個配置文件,這樣的「關鍵詞」:使用shell腳本解析多行值

keyword1='aaa 
bbb 
ccc 
' 
keyword2='ddd' 

有此值的多行,我想得到它的每一行。

--------------------- updates

對不清楚的描述。 正如我們所看到的,這個配置文件的格式就像「key = value」一樣,我可以輕鬆解析具有單個值的關鍵字的值。但我不知道如何解析具有多個值的關鍵字,例如keyword1如上所述。

+0

你想讓每一行都在不同的變量中嗎?或者他們全部被分配給關鍵字? – Vinny

+0

感謝您的迴應,我希望每一行都在不同的變量中,然後我將它們分別發送給一個函數。我想要一個循環中的進程 – aysl

+2

配置文件是否有效的shell語法?你可以做'source config.file;回聲「$關鍵字」'? –

回答

0

你必須有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循環中直接訪問它們。

0

鑑於此文件的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< 
>< 

請注意,最後有一條空行,因爲這是您在示例中的方式。