パラメータのシェル拡張?

パラメータのシェル拡張?

たとえば、

mkdir ~/{1,2,3}

ディレクトリを作成します~/1。これは次のとおりです。~/2~/3

mkdir ~/1
mkdir ~/2
mrdir ~/3

ただし、次の場合は同じ構文が使用されますCMD < argument >

brew {install, update, doctor}

...シェルの説明には言わないでください。これは次のことを意味しません。

brew install
brew update
brew doctor

すばやくスクリプトを作成するのは簡単ですが、なければならないBashで拡張または置換を使用する方が簡単な方法です。私は何を見逃していますか?

実行Bash 3.2.57(1)-release対象OS X 10.10.2

答え1

xargsあなたが望むようです:

echo install update doctor | xargs -n1 brew

答え2

最初のスペースを脱出し、残りのスペースを削除します。

$ printf "'%s'\n" brew\ {install,update,doctor}
'brew install'
'brew update'
'brew doctor'

brewコマンドの場合は、次のようにしてください(スペースなし)。

brew {install,update,doctor}

mkdirの例と同じです。

mkdir {install,update,doctor}

これを行うために外部プロセスやパイプは必要ありません。すべての操作はシェル内で実行できますbash

答え3

どうですか(バックスラッシュに注意してください、非常に重要です):

echo brew\ {install,update,doctor}\;| bash

最初のパターン(のパラメータecho)は次のように拡張されます。

echo brew install; brew update; brew doctor;

その後、これはエコーされ、次の出力を生成します。

brew install; brew update; brew doctor;

これを新しいbashインスタンスに転送します。

関連情報