首页 > 解决方案 > 如何在 Bash 的单行中打印 for 循环的输出

问题描述

echo -n "input: "
while read line 
do 
   array=("${array[@]}" $line)
done
len=${#array[@]}

echo -n "Output:"
for (( n=0; n<=len; n++ ))
    do 
    echo "${array[n]}" | rev
done 

我希望反向输出在一行中。

无偿截屏

标签: arraysbashloopsreverse

解决方案


你为什么不使用反向循环?

sep="" # no separator before first entry
for ((n=len; n>=0; n--))
do 
    printf "%s%s" "$sep" "${array[n]}"
    sep=" "
done
printf '\n'

通常更喜欢printfecho -n尽管两者都可以在这里工作。

或者,如果您只想逐个字符地反转输出;

echo "${array[@]}" | rev

但是那你为什么需要一个数组呢?

read -r -p 'input: '
echo "$REPLY" | rev

推荐阅读