我正在尝试将一个元素附加到数组中。
我尝试的是:
for i in (seq 10)
set children $children $line[$i]
end
但是这不会添加新元素。它创建一个包含所有子项的变量,然后是空格和$ line [$ i]。
答案 0 :(得分:1)
使用fish版本2.7.1-1113-ge598cb23(3.0 pre-alpha)你可以使用set -a(append)或set -p(prepend)。
set -l array "tiny tim" bob
set -l children joe elias matt
echo $children
for i in (seq 2)
set -a children $array[$i]
end
echo $children
Output:
joe elias matt
joe elias matt tiny tim bob
您还可以使用string命令,该命令应该适用于最新版本的鱼。
set -l array "tiny tim" bob
set -l children joe elias matt
echo $children
for i in (seq 2)
set children (string join " " $children $array[$i])
end
echo $children
Output:
joe elias matt
joe elias matt tiny tim bob
答案 1 :(得分:-1)
事实证明问题中的方法实际上是正确的,但在我的特定情况下,我必须在函数末尾echo $children
并将该函数的输出设置为另一个变量。在这种情况下,函数的输出是一个单独的字符串,其中包含$children
空格分隔的元素。
所以我所做的解决方案是在函数末尾echo $children | tr ' ' \n
。
tr
用换行符替换空格。这种方式$another_var
将是一个等于$children
的数组。
这是一个完整的(ish)示例:
function get_children
# fill the array of children
echo $children | tr ' ' \n
end
set another_var (get_children $parent)