• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[solved] bash in_array

Hallo,

ich würde gern eine in_array Funktion (so wie aus PHP bekannt) in bash realisieren. Ich übergebe also ein Element und ein Array und teste ob das Element im Array ist. Mein Problem ist jetzt: Wie übergebe ich das Array?

Zum Test habe ich folgendes versucht, was aber leider nur 1 ausgegeben hat:
Code:
function in_array() {
  ARRAY=$1
  echo "${#ARRAY[@]}"
}

ARR=(A B C D)
in_array ARR
 
Hi,

bash ist nicht PHP. Übergebene Arrays werden plattgedrückt wie in Perl:
Code:
#!/bin/bash

in_array() {
    for i in $@
    do
        echo $i
    done
}

ARR=(A B C D)
in_array ${ARR[@]}
Arrays

http://tldp.org/LDP/abs/html/arrays.html

sind in der Shell nicht allzu üblich und werden von alten Shell-Versionen sogar gar nicht unterstützt.

Viele Grüße
 
Danke.

Die Seite hab ich zwar offen, aber anscheinend habe ich das irgendwie überlesen. An der Stelle scheint die Funktion nicht wirklich Sinn zu machen, da es ja ähnlich viel Code erzeugt.
 
abgdf schrieb:
Übergebene Arrays werden plattgedrückt wie in Perl:
Code:
#!/bin/bash
in_array() {
    for i in $@
    do
        echo $i
    done
}

ARR=(A B C D)
in_array ${ARR[@]}
Wo drückt Perl Arrays platt? Du willst sicher auch "$@" "$i" und "${ARR[@]}" damit sie nicht "plattgedrückt" werden.
 
Oben