bash:如何打印多个数组值

bash:如何打印多个数组值

我是 shell 脚本的新手,正在尝试弄清楚如何一次打印数组的 3 个(或更多)值。这是我正在使用的单词列表:

$ cat words.txt 
one
two
three
four
five
six
seven
eight
nine
ten

这是我开始的脚本:

$ cat test.sh

#!/bin/bash

arr=($(cat words.txt))

for i in "${arr[@]}"; do
echo "$i" "$i" "$i"
done

期望输出:

一二三

四五六

七八九

如果使用 for 循环不是获得所需输出的最佳和最实用的方法,我非常愿意接受建议。

答案1

一种粗略的做法:使用一个计数器变量,该变量会随着文件中的每一行而增加。每 3 次迭代添加一个换行符 ( \n)。

!/bin/bash

counter=1

cat "words.txt" | while read i
do
        echo -n "$i "
        if [ `expr $counter % 3` -eq 0 ]
        then
                echo -en "\n"
        fi
        let counter=counter+1
done

答案2

可以使用 xargs 来完成。使用-n3xargs 将同时为默认echo命令使用 3 个参数。

echo "${arr[@]} | xargs -n3

相关内容