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

Bash Dynamische (Variable) Variablennamen?

Ich möchte eine Folge von Zeichenfolgen dynamisch erstellen, indem ich ein Array von Elementen manipuliere und eine arithmetische Prozedur erstelle.

for name in FIRST SECOND THIRD FOURTH FIFTH; do
    $name = $(( $6 + 1 ))
    $name = "${$name}q;d"
    echo "${$name}"; printf "n"
done

Das gewünschte Ergebnis wäre das Folgende für $6 ist gleich .

1q;d
2q;d
3q;d
4q;d
5q;d

Aber ich bekomme diesen Fehler

reel_first_part.sh: line 18: FIRST: command not found
reel_first_part.sh: line 19: ${$name}q;d: bad substitution
reel_first_part.sh: line 18: FIRST: command not found
reel_first_part.sh: line 19: ${$name}q;d: bad substitution
reel_first_part.sh: line 18: FIRST: command not found
reel_first_part.sh: line 19: ${$name}q;d: bad substitution

Ich denke, es ist etwas Einfaches. Früher hat es funktioniert, als ich so etwas gemacht habe

FIRST=$(( $6 + 1 ))
FIRST="${FIRST}q;d"

Akzeptierte Antwort:

Zunächst einmal darf um = kein Leerzeichen stehen in der Variablendeklaration in bash .

Um zu bekommen, was Sie wollen, können Sie eval verwenden .

Zum Beispiel ein Beispielskript wie Ihres:

#!/bin/bash
i=0
for name in FIRST SECOND THIRD FOURTH FIFTH; do
    eval "$name"="'$(( $i + 1 ))q;d'"
    printf '%sn' "${!name}"
    i=$(( $i + 1 ))
done

Drucke :

1q;d
2q;d
3q;d
4q;d
5q;d

Verwenden Sie eval vorsichtig, manche Leute nennen es aus triftigen Gründen böse.

declare würde auch funktionieren :

#!/bin/bash
i=0
for name in FIRST SECOND THIRD FOURTH FIFTH; do
    declare "$name"="$(( $i + 1 ))q;d"
    printf '%sn' "${!name}"
    i=$(( $i + 1 ))
done

druckt auch :

1q;d
2q;d
3q;d
4q;d
5q;d

Linux
  1. Warum ist das Setzen einer Variablen vor einem Befehl in Bash legal?

  2. Einzelne Klammer in der Bash-Variablenzuweisung?

  3. Zulässige Zeichen in Namen von Linux-Umgebungsvariablen

  4. Überprüfen Sie, ob eine Variable in einer Liste in Bash vorhanden ist

  5. Wie lösche ich eine schreibgeschützte Variable in Bash?

Bash-Declare-Anweisung:Syntax und Beispiele

Bash-Exportvariable

Bash printf - So drucken Sie eine Variable in Bash

Bash-Scripting – Variablen mit Beispielen erklärt

So setzen Sie die Umgebungsvariable in Bash

Exit-Code der Variablenzuweisung zur Befehlsersetzung in Bash