如何在变量中存储函数的返回值?

时间:2012-07-23 03:58:25

标签: bash

我很确定这是一个非常基本的问题,但是经过很长一段时间后我无法解决这个问题。

如何在变量中存储函数的返回值?

我正在尝试执行iconv功能。我试过这个:

my_var = $(iconv -f UTF-8 -t UTF-8< sample-feed-utf16.xml> con_sample-feed-utf16.xml)

该函数执行,但返回值未存储在my_var中。任何人都可以帮我这个吗?

2 个答案:

答案 0 :(得分:4)

您正在将输出重定向到文件,因此不会进入变量。

如果您想存储退出代码,可以这样做:

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

答案 1 :(得分: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