題目描述

給定一個國家名稱的清單,請將這份清單存入陣列中,並以空格分隔重新將這些國家名稱輸出。



原題網址

https://www.hackerrank.com/challenges/bash-tutorials-read-in-an-array

輸入格式

輸入國家名稱的清單,以換行字元分隔。每個國家名稱都是由英文字母和「-」字元組成。

輸出格式

輸出陣列中所儲存的國家名稱。以空格分隔不同國家。

範例輸入

Namibia
Nauru
Nepal
Netherlands
NewZealand
Nicaragua
Niger
Nigeria
NorthKorea
Norway

範例輸出

Namibia Nauru Nepal Netherlands NewZealand Nicaragua Niger Nigeria NorthKorea Norway

解題概念

Bash的陣列元素可以直接使用以下格式來指派:

陣列名稱[索引值]=元素

若之後要取得陣列的元素內容,可以這樣寫:

${陣列名稱[索引值]}

分別將輸入的各行作為元素存到陣列中,Bash可以這樣寫:

i=0
array=
while read LINE
do
    array[$i]=$LINE
    ((i += 1))
done

在兩組小括號中可以直接進行數值計算。

接著使用for迴圈便可以輕易地走訪陣列的所有元素:

for (( n = 0; n < i; n += 1 ))
do
    # do something
done

參考答案

#!/bin/bash

i=0
array=
while read LINE
do
    array[$i]=$LINE
    ((i += 1))
done

for (( n = 0; n < i; n += 1 ))
do
    printf ${array[$n]}
    if (( n != i - 1 )) ; then
        printf ' '
    fi
done