将for循环结果存储为bash中的变量

时间:2016-03-25 16:21:38

标签: linux bash for-loop

我有一个类似于以下的循环:

for time in ${seconds_list}; do
    echo "scale=2; (${cur_time}-${time})/3600" | bc
done

当然,我可以回复"结果到文件并完成它,但我认为更优雅的方法是将所有for循环结果存储在一个变量中,我可以在以后使用。 包含所有结果的变量必须如下所示:

var='30.25
16.15
64.40
29.80'

有没有一种简单的方法可以实现这一目标?

2 个答案:

答案 0 :(得分:10)

这很简单,您可以将整个循环的输出重定向到变量(如果您只想使用一个变量):

VARIABLE=$(for time in ...; do ...; done)

你的例子:

var=$(for time in ${seconds_list}; do
          echo "scale=2; (${cur_time}-${time})/3600" | bc
      done)

将您的代码封入$()。

答案 1 :(得分:7)

最好使用BASH数组来存储结果:

results=()

for time in ${seconds_list}; do
    results+=($(bc -l <<< "scale=2; ($cur_time-$time)/3600"))
done

# print the results:

printf "%s\n" "${results[@]}"