GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Typeset -a Gibt Fehler im Skript an?

Ich habe assoziative Arrays in meinem Skript verwendet, daher habe ich sie mit dem

deklariert

typeset -A <array_name> Befehl, und es funktionierte gut in der Bash-Eingabeaufforderung

Aber wenn ich es in meinem Skript verwende, erhalte ich den folgenden Fehler

typeset: -A: invalid option
typeset: usage: typeset [-afFirtx] [-p] name[=value] ...

Eine alternative Lösung wird für mich auch akzeptabel sein.

SIDENOTE:Ich habe versucht, typeset -a, aber es deklariert ein indiziertes Array. Aber ich möchte ein assoziatives Array.

Akzeptierte Antwort:

Das ist der Fehler, der von Bash 3 für typeset -A generiert wird . Assoziative Arrays wurden in Bash 4 hinzugefügt und sind in Bash 3.2 und früher nicht enthalten.

Es scheint, dass Ihr Skript mit einer anderen Version von Bash ausgeführt wird, als Sie als Shell verwenden. Wenn Sie sich in beiden Fällen auf demselben Computer befinden, haben Sie mehrere Versionen installiert und können wahrscheinlich eine mit einem anderen Pfad auswählen. Wenn Sie sich auf einem anderen Computer befinden, auf dem das Skript ausgeführt wird, können Sie möglicherweise eine neuere Version installieren, aber ansonsten haben Sie Pech, direkte Unterstützung in Bash zu erhalten.

zsh unterstützt assoziative Arrays seit viel älteren Versionen, also wenn Sie das zur Verfügung haben, können Sie Ihr Skript wahrscheinlich ohne allzu viel Arbeit portieren. Wenn Sie dazu nicht in der Lage sind, können Sie es mit regulären Arrays und grep vortäuschen , oder verwenden Sie ${[email protected]} und eine Reihe gewöhnlicher Variablen, die in älteren Bash-Versionen verfügbar sind. ${[email protected]} erweitert sich auf die Namen aller Variablen, deren Namen mit prefix beginnen , die Sie in Kombination mit mehreren Variablen prefix_key1 verwenden können , prefix_another um die meisten Verhaltensweisen assoziativer Arrays zu erhalten.


Linux
  1. Fehlerbehandlung in Bash-Skripten

  2. Kann ein Bash-Skript mit einer Datei verknüpft werden?

  3. Bash-Skriptfehler:Integer-Ausdruck erwartet?

  4. So teilen Sie eine Zeichenfolge in Bash-Skript auf

  5. Führen Sie das Bash-Skript von der URL aus

35 Bash-Skriptbeispiele

Lernen Sie die Bash-Fehlerbehandlung anhand eines Beispiels kennen

So führen Sie ein Bash-Skript aus

Bash-Skript – Beispiel „Hello World“.

Alternativen --config Java-Bash-Skript

Bash-Skript-Musterabgleich