2017-01-25 3 views

Antwort

4

Sie können es wie folgt verwenden:

# declare an array 
declare -a arr=() 

for i in $ip 
do 
    # append each curl output into our array 
    arr+=("$(curl -s $i:9200)") 
done 

# check array content 
declare -p arr 

Es ist wichtig Anführungszeichen um curl Kommentar zu verwenden Splitting Worte curl Befehl die Ausgabe in mehrere Array-Einträge zu vermeiden. Mit Anführungszeichen wird die gesamte Curl-Ausgabe zu einem einzelnen Eintrag im Array.

+1

Große @anubhava. Ich denke, es wäre schön, wenn Sie erklären könnten, warum der curl-Befehl in doppelten Anführungszeichen stehen muss. – codeforester

+0

was ich brauche, ist die Ausgabe des Curl-Befehls zum Array hinzuzufügen, nicht der Befehl selbst. – zozo6015

+0

@ zozo6015: Unter Verwendung von '$ (...)' d. H. Befehlsersetzung fügen wir die Ausgabe des 'curl'-Befehls hinzu, nicht den Befehl selbst. – anubhava

0

können Sie verwenden +=

declare -a output 
for i in $ip 
do 
    output+=("$(curl -s $i:9200)") 
done 
+0

Ich bekomme '-bash: Syntaxfehler in der Nähe von unerwarteten Token' ('' – zozo6015

+0

Ja. Gerade getestet, und anscheinend können Sie kein Leerzeichen vor' + = '. Nun, lernen Sie Jeden Tag etwas Neues –

0

Sie können die Ausgabe eines Befehls erfassen, wird eine Verbindung Befehl einschließlich, indem sie sie in $() umschließt. Mit Hilfe dieser Technik können Sie die Ausgabe Ihrer for Schleife in einer Variablen erfassen, wie so:

results=$(
    for i in $ip 
    do 
    curl -s $i:9200 
    done 
) 

grundsätzlich in ein Array erfassen kann in ähnlicher Weise durchgeführt werden, aber Handhabung Element Begrenzer könnten in geeigneter Weise als schwierig erweisen.

Verwandte Themen