Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

How to loop through multiple comma separated strings in shell

I’m trying to loop through multiple comma separated strings with same number of commas in the string.

I’ve tried the below snippet but it doesn’t return anything.

#!/bin/bash
    
ip1=“Ok1,ok2,ok3”
    
ip2=“ty1,ty2,ty3”
    
for i in ${ip[@]//,/} 
do 
        echo $i 
done

Could someone please suggest how I can change this.

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

>Solution :

Replace the comma-separated string with an array as soon as feasible. If it’s a hard-coded string, that’s trivial:

ip1=(Ok1 ok2 ok3)

If it’s from an external source (say, a command-line argument or read from a file), use read:

ip1s="Ok1,ok2,ok3"
IFS=, read -a ip1 <<< "$ips1"

Once you have an array, you can use array syntax for iteration:

for i in "${ip1[@]}"; do
    echo "$i"
done

If you have multiple arrays you want to iterate in lockstep, you can iterate over the keys of the arrays:

for i in "${!ip1[@]}"; do
  echo "${ip1[i]}"
  echo "${ip2[i]}"
done

(This ignores the possibility of sparse arrays, but you have to work to get those. In practice, arrays with n elements usually have keys 0, 1, … n-1.)

Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading