2010-09-15 166 views
1

我是unix中的新成員。我必須編寫一個shell腳本,它可以逐行讀取文件並將其存儲在單獨的變量中。我的文本文件內容有多個源路徑和一個目標路徑。 這樣的東西::如何在shell腳本中逐行讀取文件並將每行存儲在變量中

source_path=abc/xyz 
source_path=pqr/abc 
desination_path=abcd/mlk 

源路徑的數量可能會有所不同。 我在Unix上沒有太多的經驗。任何人都可以幫助我實現這一目標。這將是非常有益的。

在此先感謝

+0

你要存儲在一個變量的所有soure_paths說用冒號隔開? – codaddict 2010-09-15 17:31:56

+0

不,不,我要存儲在一個單獨的可變 – MAS1 2010-09-15 17:35:01

回答

4
sourcePaths=($(grep source_path myfile |cut -d= -f2)) 
destPath=`grep destination_path myfile |cut -d= -f2` 

$sourcePathssource_path秒的陣列。您不需要將每個source_path存儲在單獨的變量中。

你也可以遍歷數組過來,你想和每個source_path什麼。例如:

for i in "${sourcePaths[@]}" 
do 
    echo $i 
done 
1

有點哈克,但這應該工作:

old_IFS="$IFS" 
IFS="=" 

while read left right ; do 
    echo "Left side: $left" 
    echo "Right side: $right" 
done < $input_file 

IFS="$old_IFS" 

如果你想在$right擺脫"的,你可能會做這樣的事情right_content=$(sed 's|"\(.*\)"|\1|' <<<$right)<<<$rightecho $right差不多,sed命令將刪除前導和尾隨"(如果不存在引號,則字符串將按原樣傳遞)。

+0

每一條路徑:感謝名單,但你認爲它會真正爲多個源路徑工作,並將其存儲在一個不同的變量 – MAS1 2010-09-15 17:47:15

+0

:它不是練琴是SOURCE_PATH將內容「」。 – MAS1 2010-09-15 17:50:21

0
#!/bin/sh 
#path to config file 
CONFIG_FILE=/tmp/conf.log 
#check if file exist 
if [[ -f $CONFIG_FILE ]]; then 
#use source filename or .file name 
    . $CONFIG_FILE 
#test variable 
echo "source is $source" 
echo "dest is $dest" 
fi 
相關問題