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.