Wie markiere ich ein Array in POSIX sh?

8

Beim Ersetzen externer Befehle in einem Shell-Skript habe ich ein Array verwendet, um awk NF loszuwerden.

Da ich nun von bash zu POSIX sh gewechselt bin, kann ich das Array nicht als richtig markieren:

%Vor%

Ich benutze OpenBSDs, sh und es hat genau die gleiche Größe wie die ksh. Wenn Sie oben auf /bin/sh wechseln, scheint folgendes nicht zu funktionieren:

%Vor%

Wie konnte ich das obige Skript in /bin/sh realisieren? (Beachten Sie, dass es funktioniert, wenn Sie bash mit --posix aufrufen, das ist nicht was ich suche.)

    
Charles 27.06.2011, 22:05
quelle

3 Antworten

12

Arrays sind nicht Teil der Spezifikation POSIX sh .

Es gibt verschiedene andere Möglichkeiten, den letzten Gegenstand zu finden. Ein paar Möglichkeiten:

%Vor%

oder:

%Vor%     
Matthew Slattery 28.06.2011 00:40
quelle
2

Sie können das folgende Projekt von Github verwenden, das ein POSIX-kompatibles Array implementiert, das in allen Shells funktioniert, die ich ausprobiert habe: Ссылка

Es ist nicht sehr praktisch zu benutzen, aber ich fand es gut für meine Zwecke.

    
Sammy S. 05.04.2013 14:40
quelle
1

Der folgende Code funktioniert mit der Heirloom Bourne Shell :

%Vor%

Beachten Sie, dass IFS auf ein Leerzeichen gesetzt ist und es keine doppelten Anführungszeichen um $RANGE gibt.

    
ralph 28.06.2011 09:43
quelle

Tags und Links