bashは残りのパラメータを使用します。

bashは残りのパラメータを使用します。

名前とコマンドをパラメータとして使用するbashスクリプトがあります。これは簡単です。

#myscript
echo $1
$2

私はこのように動作します。

bash myscripts myjob ls

「myjob」をエコーし​​てlsコマンドを実行します。ただし、コマンドが複数の単語で構成されている場合は、次のように引用符を付ける必要があります。

bash myscripts myjob "ls -l"

今私の質問は、引用符を提供する必要がないようにシェルスクリプトを書く方法はありますか?たとえば、最初の引数の代わりにすべてを私のコマンドとして扱いますか? bashを使って実行できますか?

ベストアンサー1

shiftはい、以下を使用して前のパラメータを移動できます。

#!/bin/bash
echo "$1"
shift 1
"$@"

shift Nパラメータ1からNまでスキップし、パラメータN + 1は1、N + 2は2になるようにカウンタが移動されます。

これは、最初のコマンド(myjob)が単一の単語コマンドであり、2番目のコマンド(ls -l)のみが複数の単語コマンドであることを意味します。

おすすめ記事