2014-11-04 54 views
0

我有一個參數文件(parameter.txt)包含如下:殼牌腳本文件需要部分路徑從參數文件

SASH=/home/ec2-user/installers 
installer=/home/hadoop/path1 

和我的外殼腳本(temp_pull.sh)是象下面這樣:

EPATH=`cat $1|grep 'SASH' -w| cut -d'=' -f2` 
echo $EPATH 
${EPATH}/data-integration/kitchen.sh -file="$KJBPATH/hadoop/temp/maxtem/temp_pull.kjb" 

當我跑我的temp_pull.sh象下面這樣:

./temp_pull.sh parameter.txt 

$EPATH給了我正確的路徑,但3R d行代碼只需要部分路徑。

錯誤代碼粘貼下面:

/home/ec2-user/installers-->out put of 2nd line 
/data-integration/kitchen.sh: No such file or directory**2-user/installer** -->out put of 3rd line 
+1

你可以使用其他文件中的值稍微優雅一些​​:'source「$ 1」',然後你就可以直接使用'$ SASH'。 – fedorqui 2014-11-04 12:21:57

+0

謝謝fedorqui ..請您詳細說明您的答案..我不熟悉shellcripting .. – Aman 2014-11-04 12:26:13

回答

1

無需手動解析文件的值,因爲它已經包含格式變量的數據定義:var=value

因此,如果文件足夠安全,可以使用source這個文件,這樣SASH的值就可以通過說$SASH來提供。

然後,您可以使用以下命令:

source "$1" # source the file given as first parameter 
"$SASH"/data-integration/kitchen.sh -file="$KJBPATH/hadoop/temp/maxtem/temp_pull.kjb" 
+0

如何處理,如果我有多個參數在file.I編輯過的問題。 – Aman 2014-11-04 12:43:31

+0

然後你也可以使用'$ installer'! – fedorqui 2014-11-04 12:44:37

+0

嘿..我試過....我得到同樣的確切的錯誤.....它採取部分數據。 – Aman 2014-11-04 12:48:31

0

的問題是,我們用從Windows到UNIX.So分隔符的問題被複制的根本原因文件。

通過使用dos2unix paramfile.txt我們能夠修復isue。

命令:

dos2unix paramfile.txt 

這將窗戶全部delemeter轉換爲UNIX格式。