2016-10-12 2 views
0

Ich arbeite an ein einfaches Skript erstellen, wo ich jede Zeile als Variable für die spätere Verwendung speichern kann. Es lief jedoch nicht gut. Kann mir bitte jemand helfen?Speichern Sie jede Zeile der Echoausgabe als Variable BASH

read -p "Enter the number of user and press [ENTER]:" num 
    for ((i=1; i<=$num; i++)); do 
      var$i="|-> Line $i" 
      echo "var$i" 

    done 

Ich versuche, die Ausgabe, die wie diese

|-> Line 1 
|-> Line 2 
|-> Line 3 
|-> Line 4 

Antwort

3

Du bist nicht zu weit weg schaut zu erhalten. Verwenden Sie einfach ein Array:

read -p "Enter the number of user and press [ENTER]:" num 
for ((i=0; i<$num; i++)); do 
    var[$i]="|-> Line $((i+1))" 
    echo "${var[i]}" 
done 

for line in "${var[@]}" 
do 
    echo "Saved line: $line" 
done 

wo Letzteres gibt ein Beispiel, wie Sie es später abrufen. Außerdem sind Arrays null-indiziert und ich habe es entsprechend angepasst.

+0

Das funktioniert perfekt. Danke vielmals ! Was hast du getan, um sie in ein Array zu bringen? –

+0

Ja, deine Antwort ist besser. –

+0

Ja, das bringt sie in ein Array. Es beruht auch auf der Tatsache, dass eine undefinierte Variable (wenn sie als ein Array verwendet wird) identisch mit einem leeren Array funktioniert. Man könnte aber auch 'var =()' sagen, um expliziter zu sein und alles zu löschen, was vorher in 'var' definiert wurde. – FatalError

0

Kann dies Ihre Anforderung erfüllen?

read -p "Enter the number of user and press [ENTER]:" num 
    for ((i=1; i<=$num; i++)); do 
     var_j="|-> Line $i" 
     echo $var_j 

    done 
Verwandte Themen