2015-11-08 77 views
0

How to read multiple strings in a file as a different variables延續: -從文件中讀取多個字符串作爲不同的變量。

file.conf:

#### 
#xyz 

key name 


/usr/bin/ /text/abc/ 

value pswd 

現在我想編寫一個腳本來有兩個變量像上面

script.sh

key="name"  #key as variable 
value="pswd" #value as variable 
/usr/bin/=/text/abc/  

請有關更多信息,請參閱上述鏈接。

+0

變量名稱不能在'/ usr/bin /'中,因爲'/'在變量名稱中是不允許的。 – anubhava

回答

0

你必須有一種方法來忽略有效的unix變量名無效的行的行。在UNIX變量遵循以下規則:

開始以下劃線或字母后跟0或多個字母數字或下劃線

使用這個規則,你可以在BASH使用這個腳本:

while read k v; do 
    [[ $k =~ ^[_[:alpha:]][[:alnum:]_]*$ ]] && declare $k="$v" 
done < conf.file 

這將忽略所有以#或/usr/bin開頭的空白行或行。

在ksh中試試這個:

while read k v; do 
    [[ $k =~ ^[_[:alpha:]][[:alnum:]_]*$ ]] && eval $k="$v" 
done < conf.file 
+0

是否有指定/ text/abc/to/usr/bin /&echo來驗證此? – user3527785

+0

正如我上面評論說'/ text/abc /'不是一個有效的unix變量名 – anubhava