如何在同一行上打印bash数组

Ale*_*yer 10 arrays bash printf echo

我正在将文件类型数据读入一个bash数组,并需要在与空格相同的行上打印它的内容.

#!/bin/bash

filename=$1
declare -a myArray

readarray myArray < $1

echo "${myArray[@]}" 
Run Code Online (Sandbox Code Playgroud)

我尝试这甚至与回声-n标志仍然打印在换行,我错过了什么,会更好地工作printf的?

Dar*_*zer 19

简单的一行打印方式

echo "${myArray[*]}"
Run Code Online (Sandbox Code Playgroud)

例:

myArray=(
one
two
three
four
[5]=five
)

echo "${myArray[*]}"

#Result
one two three four five
Run Code Online (Sandbox Code Playgroud)


che*_*ner 6

readarray保留每个数组元素中的尾部换行符.要剥离它们,请使用该-t选项.

readarray -t myArray < "$1"
Run Code Online (Sandbox Code Playgroud)


Gil*_*not 5

单程 :

printf '%s\n' "${myArray[@]}" | paste -sd ' '
Run Code Online (Sandbox Code Playgroud)

或者干脆:

printf '%s ' "${myArray[*]}"
Run Code Online (Sandbox Code Playgroud)

  • 使用 * 受 "$IFS" 的第一个字符影响,默认情况下它恰好是一个空格。使用 `printf '%s ' "${myArray[@]}"` 更加健壮。 (2认同)