簡體   English   中英

Bash 腳本將數組的元素全部打印在一行上並用空格分隔。 保證沒有元素是空的

[英]Bash script to print the elements of an array all on one line and separated by a space. it is guaranteed that no elements will be empty

您能否幫助使用以下 bash 腳本:

我需要編寫一個 bash 腳本來將數組的元素全部打印在一行上並用空格分隔。 保證沒有元素是空的。

輸入格式:

1_) 第一行包含一個 integer,n,my_array 中的元素個數。

2_) n 后續行中的每一行 i (其中 0 <= i < n) 包含 my_array[i]

用於測試的樣本輸入:

#數組元素個數

4

#數組元素

12345

一個

A21s

最后元素

樣品 output:

12345 A A21s 最終元件

嘗試了下面的代碼,它工作正常,但要求是讀取元素數組並將其打印在一行中

  read num
    string=""
    for (( counter="$num"; counter>0; counter-- ))
    do
    read str
    string=$string" "$str
    done
    echo $string

非常感謝!

這將是在 shell 腳本中執行您想要的操作的簡潔、強大、高效、可移植、可擴展的方式(而不是填充 shell 數組並使用Z2591C98B70119FE624898BE91 讀取循環):

$ awk 'NR>1{printf "%s%s", sep, $0; sep=OFS} END{print ""}' file
12345 A A21s Final element

或者,如果您確實需要限制從輸入打印到第一行的值的行數:

$ awk 'NR==1{cnt=$1; next} {printf "%s%s", sep, $0; sep=OFS} !(--cnt){print ""; exit}' file
12345 A A21s Final element

這個:

#!/bin/bash

read -rp "Number or lines: " lines
mapfile -t array < <(head -n $lines)
printf "%s\n" "${array[@]}"

您可以使用declare -p array來查看${array[@]}的內容。 此語法允許空值,例如內容中的空格...

您可以用printf替換最后一個命令( echo ),然后是echo

printf "<%s> " "${array[@]}"
echo

您可以使用參數擴展來打印第一個元素之后的所有內容:

echo "${my_array[@]:1}"

暫無
暫無

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

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