簡體   English   中英

如何在同一行上打印bash數組

[英]How to print a bash array on the same line

我正在將文件類型數據讀入一個bash數組,並需要在與空格相同的行上打印它的內容。

#!/bin/bash

filename=$1
declare -a myArray

readarray myArray < $1

echo "${myArray[@]}" 

我嘗試這個,即使使用echo -n標志它仍然在換行符上打印,我缺少什么,printf會更好嗎?

簡單的一行打印方式

echo "${myArray[*]}"

例:

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

echo "${myArray[*]}"

#Result
one two three four five

readarray在每個數組元素中保留尾部換行符。 要剝離它們,請使用-t選項。

readarray -t myArray < "$1"

單程 :

printf '%s\n' "${myArray[@]}" | paste -sd ' '

或者干脆:

printf '%s ' "${myArray[*]}"

如果你有來自輸入的數組元素,這就是你可以做到的

  • 創建一個數組
  • 添加元素
  • 然后在一行中打印數組

劇本:

#!/usr/bin/env bash

declare -a array
var=0
while read line
do
  array[var]=$line
  var=$((var+1))
done

# At this point, the user would enter text. EOF by itself ends entry.

echo ${array[@]}

我最喜歡的技巧是

echo $(echo "${myArray[@]}")

@ sorontar在評論中發布的解決方案很方便:

printf '%s ' "${myArray[@]}"

但在某些地方,領先的空間是不可接受的,所以我實施了這個

local str
printf -v str ' %s' "${myArray[@]}"  # save to variable str without printing
printf '%s' "${str:1}"  # to remove the leading space 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM