我是 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 来完成。使用-n3
xargs 将同时为默认echo
命令使用 3 个参数。
echo "${arr[@]} | xargs -n3