配列の引数を使用してコマンドを実行する

配列の引数を使用してコマンドを実行する

というグラフィックプログラムがあるとしましょうapp。使用例:app -t 'first tab' -t 'second tab'プログラムで2つの「タブ」を開きます。

app問題は、スクリプトでコマンドを実行する方法です(つまり、パラメータの数が異なる場合があります)。bash

考えてみてください:

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

上記のスクリプトに同等のものがあることを願っていますapp -t 'first tab' -t 'second tab'。そのようなbashスクリプトを書くには?

編集:質問は、引数配列を使用してインスタントコマンドライン引数を結合する方法を尋ねることです。

ベストアンサー1

"${array[@]}"配列項目を別の単語(パラメータ)に拡張して、配列にパラメータを提供するのは簡単です。ロゴを追加するだけです-t。これを行うには、最初の配列を反復処理し、引数リスト全体の別の配列を構築し、-tその過程でフラグを追加します。

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

ハードコードされたリストの代わりにスクリプトのコマンドライン引数を取得するには、代わりに"$@"使用してください。"${tabs[@]}"

関連:変数に保存されたコマンドをどのように実行できますか?

おすすめ記事