GNU/Linux >> Linux Esercitazione >  >> Linux

Digitare -a sta dando un errore nello script?

Stavo usando array associativi nel mio script, quindi li dichiaravo con il

typeset -A <array_name> comando e ha funzionato bene nel prompt di bash

Ma quando lo uso nel mio script, ottengo il seguente errore

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

Anche per me sarà accettabile una soluzione alternativa.

SIDENOTE:ho provato typeset -a ma dichiara un array indicizzato. Ma voglio un array associativo.

Risposta accettata:

Questo è l'errore generato da Bash 3 per typeset -A . Gli array associativi sono stati aggiunti in Bash 4 e non sono in Bash 3.2 e precedenti.

Sembra che il tuo script venga eseguito con una versione di Bash diversa da quella che stai utilizzando come shell. Se sei sulla stessa macchina in entrambi i casi, hai più versioni installate e probabilmente puoi selezionarne una con un percorso diverso. Se ti trovi su una macchina diversa che esegue lo script, potresti essere in grado di installare una versione più recente, ma per il resto non sei fortunato per il supporto diretto in Bash.

zsh supporta array associativi da versioni molto precedenti, quindi se lo hai disponibile puoi probabilmente trasferire il tuo script senza troppo lavoro. Se non sei in grado di farlo, puoi falsificarlo con array regolari e grep o utilizzando ${[email protected]} e un insieme di variabili ordinarie, disponibile nelle versioni precedenti di Bash. ${[email protected]} si espande ai nomi di tutte le variabili i cui nomi iniziano con prefix , che puoi utilizzare in combinazione con diverse variabili prefix_key1 , prefix_another per ottenere la maggior parte dei comportamenti degli array associativi.


Linux
  1. Come eseguire il debug di uno script Bash?

  2. Come dividere una stringa nello script Bash

  3. alternative --config java bash script

  4. Esegui lo script bash come demone

  5. Aggiungi uno script bash al percorso

35 Esempi di script Bash

Gestione degli errori negli script Bash

Come eseguire uno script Bash

basename con spazi in uno script bash?

Corrispondenza del modello di script Bash

Esegui il comando bash sulla pipeline jenkins