Schleife über einen Satz von Zeichenfolgen, die Leerzeichen enthalten

Ich habe mehrere strings wie "a b", "c-d", "foo bar" und so weiter. Ich will eine Schleife über dieses set aus string und führen Sie eine Aktion für jede dieser. In dieser Aktion-ich nenne mehrere andere Skripte, so möchte ich nicht ändern, wenns für diese Schleife, da es brechen könnte mein Aufruf anderer Skripte. Dies ist der Grund, warum ich versuche zu entkommen, die Leerzeichen enthalten, in diesen Zeilen, aber ohne Erfolg.

Also zum Beispiel ich bekommen

a b
c d

Und ich habe versucht, die folgenden:

#!/bin/sh

x="a b"
y="c d"

echo "Attempt 1"
all="$x $y"

for i in $all ; do
  echo $i
done

echo "Attempt 2"
all="a\ b c\ d"
for i in $all ; do
  echo $i
done

echo "Attempt 3"
all=($x $y)
for i in ${all[@]} ; do
  echo $i
done

echo "Attempt 4"
all='"'$x'" "'$y'"'
for i in $all ; do
  echo $i
done

echo "Attempt 5"
for i in "$x" "$y" ; do
  echo $i
done

echo "Attempt 6"
all2=("a b" "c d");
for i in ${all2[@]}; do
  echo $i
done

echo "Attempt 7"
all3="a b c d"
echo $all3|
while read i; do
  echo $i 
done 

Versuchen, nur 5 erfolgreich, aber ich möchte dies tun, ohne zu müssen, deklarieren Sie eine variable pro string(es wäre schmerzhaft zu halten). Ich habe gerade eingeführten x-und y zum testen, aber die Idee ist zu erklären, in der eine variable mit dem set "b" und "c d".

InformationsquelleAutor der Frage jolivier | 2013-08-22

Schreibe einen Kommentar