2012-07-23 93 views
0

我非常確定這是一個非常基本的問題,但我很長時間後無法解決它。如何將函數的返回值存儲在變量中?

如何將函數的返回值存儲在變量中?

我正在嘗試執行iconv函數。和我試圖與此:

my_var = $(的iconv -f UTF-8 -t UTF-8 <樣品送進utf16.xml> con_sample送進utf16.xml)

的函數執行,但返回值不存儲在my_var中。誰能幫我這個?

+1

'iconv'不是函數,它是可執行文件。你的意思是「退貨價值」 - 流程的標準出/錯,還是退出狀態? – ephemient 2012-07-23 04:00:26

+0

你想輸出到變量,或退出代碼? – 2012-07-23 04:01:56

+0

@ephemient:我試圖獲得退出代碼。 – Bhushan 2012-07-23 04:21:07

回答

4

您正在將輸出重定向到一個文件,因此沒有任何內容會進入該變量。

如果你想存儲的退出代碼,你可以做這樣的:

iconv -f UTF-8 -t UTF-8 < sample-feed-utf16.xml > con_sample-feed-utf16.xml 
my_var=$? 
+0

非常感謝,拯救了我的一天! (其實晚上) – Bhushan 2012-07-23 04:20:39

3

如果你這樣做:

my_var=$(shell command) 

然後shell命令的標準輸出將被存儲在my_var。在你的例子中,因爲你將shell命令的輸出重定向到一個文件,所以沒有輸出存儲在my_var中。

此外,shell命令還會將一個整數值(退出代碼)返回給shell以指示未成功執行。您可以存儲此值:

iconv -f UTF-8 -t UTF-8 < sample-feed-utf16.xml > con_sample-feed-utf16.xml 
my_var=$? 
[[ my_var -eq 0 ]] && echo success 
相關問題