将变量中的多个值复制到unix中的新变量中

时间:2013-12-09 00:04:19

标签: linux unix ksh

我们有一个变量abc,它会不断更新,其中包含用户未知的不同值。我需要将abc的所有值存储在另一个变量bcd中。 让我们考虑一个我们有一个变量abc的案例

    abc="123" 
    abc="456"
    #value of abc keeps on updating with a value not known to the user 

现在让我们考虑变量bcd

     bcd="all values of abc:$abc"

这里我只得到abc的最后一个值。我想在单个变量中包含所有更新的值,我们如何在unix中实现这一点

2 个答案:

答案 0 :(得分:1)

每次变量abc发生变化(或每次您希望将其值附加到变量bcd)时,请说明以下内容:

bcd="$bcd,$abc"

注意,避免在bcd的一端或另一端使用额外的逗号(或其他分隔符)有点麻烦。为了避免这个问题,您可以在第一次追加之前将一个名为(例如)bcdSep的变量设置为"",之后设置为",";并使用bcd="$bcd$bcdSep$abc"

以下是使用示例(>表示提示):

> bcd="The values are "; bcdSep=""
> abc="123"
> bcd=$bcd$bcdSep$abc; bcdSep=","; echo $bcd
The values are 123
> abc=456
> bcd=$bcd$bcdSep$abc; bcdSep=","; echo $bcd
The values are 123,456
> abc=789
> bcd=$bcd$bcdSep$abc; bcdSep=","; echo $bcd
The values are 123,456,789

如上图所示,请使用语句abc [或bcd=$bcd$bcdSep$abc跟随bcd=$bcd$bcdSep$abc; bcdSep=","的每次更改,因为可以继续设置bcdSep=","]。

答案 1 :(得分:1)

如果你真的想把$ abc的所有值连接到$ bcd那么只需要$ bcd = $ bcd。$ abc

不确定我是否真的想要,如果你不小心的话,$ abc会变得很长。

- update-- 在ksh中这样做:

#!/bin/ksh
bcd="all values of abc:"
abc=123
bcd=$bcd" "$abc
echo $bcd
abc=456
bcd=$bcd" "$abc
echo $bcd

运行脚本:

all values of abc: 123
all values of abc: 123 456