GNU/Linux >> Linux の 問題 >  >> Linux

配列からの引数を使用してコマンドを実行しますか?

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スクリプトはどのように書くことができますか?

編集:質問は、引数の配列を使用してコマンドライン引数をその場で作成することについて尋ねていることに注意してください。

承認された回答:

配列から引数を与えるのは簡単です、"${array[@]}" 個別の単語(引数)として配列エントリに展開されます。 -tを追加するだけです フラグ。これを行うには、最初の配列をループし、引数の完全なリスト用に別の配列を作成して、-tを追加します。 進行中のフラグ:

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

"[email protected]"を使用します "${tabs[@]}"の代わりに ハードコードされたリストの代わりに、スクリプトのコマンドライン引数を使用します。


Linux
  1. エイリアスによってシャドウされているコマンドを実行しますか?

  2. Bashの文字列/配列から一意の要素の配列を作成するにはどうすればよいですか?

  3. コマンドラインでスクリプトから関数を実行するにはどうすればよいですか?

  1. docker run へのコマンドライン引数

  2. 異なる引数を指定して前のコマンドを再実行します

  3. jq を使用して json 出力からキー値をフェッチする

  1. Stratisを使用してコマンドラインからLinuxストレージを管理する

  2. Windowsから複数のLinuxサーバーでコマンドを実行する

  3. シェルから Vim コマンドを実行するには?