Hey there people on the internet. Here's my solution for Concatenate an array with itself Linux shell challenge from HackerRank. You can find answers to other Linux shell challenges via this link => https://blog.shasec.rocks/post/hackerrank-bash-challs. So let's get started.
Challenge
Given a list of countries, each on a new line, your task is to read them into an array. Then, concatenate the array with itself (twice) - so that you have a total of three repetitions of the original array - and then display the entire concatenated array, with a space between each of the countries' names.
> Recommended References
Here's a great tutorial with useful examples related to arrays in Bash.
> Input Format
A list of country names. The only characters present in the country names will be upper or lower case characters and hyphens.
> Output Format
Display the entire concatenated array, with a space between each of them.
> Sample Input
Namibia
Nauru
Nepal
Netherlands
NewZealand
Nicaragua
Niger
Nigeria
NorthKorea
Norway
> Sample Output
Namibia Nauru Nepal Netherlands NewZealand Nicaragua Niger Nigeria NorthKorea Norway Namibia Nauru Nepal Netherlands NewZealand Nicaragua Niger Nigeria NorthKorea Norway Namibia Nauru Nepal Netherlands NewZealand Nicaragua Niger Nigeria NorthKorea Norway
> Explanation
The entire concatenated array has been displayed.
Solution
Here's my answer to this challenge. I made sure to add comments along the way to make sense on what's going on.
#/bin/bash
# Create empty Array
countries=()
# Variable to track the index of the array
count=0
# Get user input including the last line of input
while read line || [ -n "$line" ]; do
# Append to array
countries[$count]=$line
# Increment the count index
count=$(( $count+1 ))
done
# Print the array 3x
echo "${countries[@]}" "${countries[@]}" "${countries[@]}"

💬 Comment Section 💬