Como faço para criar um script bash que possa extrair strings de um array?

Como faço para criar um script bash que possa extrair strings de um array?

Estou com um dilema: estou tentando escrever um script bash do Linux para extrair cada string de um array e processar o resultado.

Ou seja

var=("string one" "string two" "string three")

Como eu usaria um loop for para extrair cada string, tendo em mente que as strings têm espaços, então eu precisaria extrair a string inteira, ou seja, "string três", então dentro desse loop fo, ele processaria o resultado.

POR EXEMPLO

#! /bin/bash

clear
SimName=("Welcome" "Testing Region")
echo
echo
echo
echo
#cd dreamgrid/Opensim/bin

# for loop goes here

# processing below
#screen -S "$SimName" -d -m mono OpenSim.exe -inidirectory="Regions/$SimName"  # Needs altering to process each string
#sleep 2
#screen -r "$SimName"   # Needs chaging to show each string in turn.

# echo $SimName[1]   # something test to it with, but needs changing to show each string in turn.

No BASIC é simples:

DIM A$(2)
A$(1) = "string one"
A$(2) = "string two"
FOR A=1 to 2
C$=A$(A)
FOR DL=1 TO 2000
NEXT
PRINT C$
NEXT

Responder1

A sintaxe é

for val in "${arr[@]}"; do 
  # something with "$val"
done

ex.

$ arr=("string one" "string two" "string three")
$ for val in "${arr[@]}"; do printf '%s\n' "$val"; done
string one
string two
string three

A aspas duplas de "${arr[@]}"é o que faz com que ele lide corretamente com elementos que contêm espaços em branco (ou, mais geralmente, caracteres do atual IFS). De man bash:

                                                                       If
   the word is double-quoted, ${name[*]} expands to a single word with the
   value of each array member separated by the first character of the  IFS
   special variable, and ${name[@]} expands each element of name to a sep‐
   arate word.

informação relacionada