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

Einen Befehl mit Argumenten ausführen, die aus einem Array stammen?

Angenommen, ich habe ein grafisches Programm namens app . Verwendungsbeispiel:app -t 'first tab' -t 'second tab' öffnet zwei „Tabs“ in diesem Programm.

Die Frage ist:wie kann ich den Befehl ausführen (also app ) innerhalb einer bash Skript, wenn die Anzahl der Argumente variieren kann?

Bedenken Sie Folgendes:

#!/bin/bash
tabs=(
    'first tab'
    'second tab'
)

# Open the app (starting with some tabs).
app  # ... How to get `app -t 'first tab' -t 'second tab'`?

Ich möchte, dass das obige Skript einen Effekt hat, der app -t 'first tab' -t 'second tab' entspricht . Wie kann ein solches Bash-Skript geschrieben werden?

Bearbeiten:Beachten Sie, dass die Frage nach dem spontanen Erstellen von Befehlszeilenargumenten mit einem Array von Argumenten fragt.

Akzeptierte Antwort:

Die Argumente eines Arrays anzugeben ist einfach, "${array[@]}" erweitert sich zu den Array-Einträgen als unterschiedliche Wörter (Argumente). Wir müssen nur das -t hinzufügen Flaggen. Dazu können wir das erste Array durchlaufen und ein weiteres Array für die vollständige Liste der Argumente erstellen, indem wir das -t hinzufügen Flaggen, während wir gehen:

#!/bin/bash
tabs=("first tab" "second tab")
args=()
for t in "${tabs[@]}" ; do 
    args+=(-t "$t")
done
app "${args[@]}"

Verwenden Sie "[email protected]" statt "${tabs[@]}" um die Befehlszeilenargumente des Skripts anstelle einer fest codierten Liste zu verwenden.


Linux
  1. Verwenden von Stratis zum Verwalten von Linux-Speicher über die Befehlszeile

  2. Einen Befehl ausführen, der von einem Alias ​​verdeckt wird?

  3. Wie erstelle ich ein Array eindeutiger Elemente aus einer Zeichenfolge/einem Array in Bash?

  4. Verwenden des passwd-Befehls innerhalb eines Shell-Skripts

  5. Befehlszeilenargumente für docker run

So führen Sie Befehle von der Standardeingabe mit Tee und Xargs in Linux aus

Geben Sie Dateien über das Internet von der Befehlszeile aus mit Transfer.sh frei

So führen Sie einen Befehl regelmäßig unter Linux mit Watch aus

So entfernen Sie Zeilen aus einer Datei mit dem Sed-Befehl

Googler – Führen Sie Google-Suchen über die Befehlszeile aus

Führen Sie Hintergrundprozesse in Linux mit dem Screen-Befehl aus