2013-07-01 24 views
0

我想寫一些東西在我的plist中,因爲我使用腳本外殼。 我正在同一時間對shell腳本進行培訓。 我只是試圖讓git的日誌命令的三個第一輸出線,並把輸出的info.plist如何在腳本shell中將空間轉義爲默認寫入值?

我的腳本的屬性:

output=$(git log | head -n 3) 
file=$(echo $PWD)/info 

# write it to the Info.plist 
defaults write "$file" gitLog $output 

此命令的輸出:$(git的日誌|頭-n 3)

commit glfdkjglkjdfgjdflkjglkdfjglkdfgkljdfk 
Author: Steve Jobs <[email protected]> 
Date: Fri Jun 28 14:33:38 2013 -0700 

的問題是,當我把$outputdefaults write參數。它認爲我給其他參數提交作爲「glfdkjglkjdfgjdflkjglkdfjglkdfgkljdfk」...

所以我需要做的事情使他明白,輸出只是一個參數。

這就像當我想顯示一個文件夾名稱的內容空間的列表。 我要做的:

ls "MY FOLDER" 

我希望我很好地解釋我的問題

幫助,請

+0

你在引用'$ file',爲什麼不是'$ output'? –

+0

當我引用'output'時,它告訴我他無法分析輸出的結果,並且在它說出來之後:嘗試單引號。 我試過單引號,它什麼也沒做,我的屬性是空的:S – manonthemoon

回答

1

嘗試使用:

output=$(git log | head -n 3) 
file=$(echo $PWD)/info 

defaults write "$file" gitLog -string "$output" 

如果你想儲存3行文字爲「一弦」。

或下:

OIFS=$IFS 
IFS=$'\n' 
declare -a output=($(git log | head -n 3)) 
IFS=$OIFS 

file=$(echo $PWD)/info 
defaults write "$file" gitLog -array "${output[0]}" "'${output[1]}'" "${output[2]}" 

,如果你想存儲3行的 「陣列」。

+0

第一個解決方案工作得很好! 謝謝!我只需要添加-string參數! 完美! – manonthemoon