2012-07-23 99 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 
相关问题