【问题标题】:How to print output of a for loop in a single line in Bash如何在 Bash 的单行中打印 for 循环的输出
【发布时间】:2020-09-26 13:10:09
【问题描述】:
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 

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

【问题讨论】:

  • array+=( "$line" ) 更简洁有效地向数组追加一行。
  • printf '%s\n' "${array[@]}" 将整个数组作为一行代码一次打印(具有多行输出),或者printf '%s ' "${array[@]}"; echo 将其打印到一行输出。

标签: arrays bash loops reverse


【解决方案1】:

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

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

通常更喜欢printf 而不是echo -n,尽管两者都可以在这里工作。

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-11
    • 1970-01-01
    • 2020-11-26
    • 1970-01-01
    • 2016-04-21
    • 2011-10-15
    • 2022-11-26
    相关资源
    最近更新 更多