GNU/Linux >> Znalost Linux >  >> Linux

Spustit příkaz pomocí argumentů, které pocházejí z pole?

Předpokládejme, že mám grafický program s názvem app . Příklad použití:app -t 'first tab' -t 'second tab' otevře v tomto programu dvě „karty“.

Otázka zní:jak mohu provést příkaz (tj. app ) z bash skript, pokud se počet argumentů může lišit?

Zvažte toto:

#!/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'`?

Chtěl bych, aby výše uvedený skript měl efekt ekvivalentní app -t 'first tab' -t 'second tab' . Jak lze napsat takový bash skript?

Edit:Všimněte si, že otázka se ptá na skládání argumentů příkazového řádku za běhu pomocí řady argumentů.

Přijatá odpověď:

Zadání argumentů z pole je snadné, "${array[@]}" expanduje na položky pole jako odlišná slova (argumenty). Potřebujeme pouze přidat -t vlajky. Abychom to udělali, můžeme zacyklit první pole a vytvořit další pole pro úplný seznam argumentů přidáním -t flags as we go:

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

Použijte "[email protected]" místo "${tabs[@]}" převzít argumenty příkazového řádku skriptu namísto pevně zakódovaného seznamu.


Linux
  1. Spustit příkaz, který je zastíněn aliasem?

  2. Jak vytvořit pole jedinečných prvků ze řetězce/pole v Bash?

  3. Použití příkazu passwd ze skriptu shellu

  1. Bash skript:Použití příkazu script z bash skriptu pro protokolování relace

  2. Automatizace spouštění příkazů na Linuxu z Windows pomocí PuTTY

  3. Jak mohu spustit funkci ze skriptu v příkazovém řádku?

  1. argumenty příkazového řádku pro spuštění dockeru

  2. Znovu spusťte předchozí příkaz s jinými argumenty

  3. Použití jq k načtení hodnoty klíče z výstupu json