変数のコマンド

変数のコマンド

コマンド名が変数内のステートメントを実行しようとしています。たとえば、

my_command='/path/to/some/command'

$my_command -f foo -b bar -s something else 

しかし、上記の方法はうまくいきません。私が受け取ったエラーは、シェルが私の引数をコマンドとして解釈しようとしていることを示します。

BashとZshでこれをどのように実行しますか?

答え1

コマンドを保存するには、次の関数を使用できます。

ただし、Bourneに似たシェルでは次のようになりますbash

mycommand() /path/to/some/command some fixed args "$@"
mycommand other args

bash中かっこが必要です。

mycommand() { /path/to/some/command some fixed args "$@";}

(このマウントは他の場合は損傷しないので、携帯性が必要なときに使用するのが最善です)

あなたが常習者である場合cshでも使用できますalias

次の変数を使用できます。

mycommand=/path/to/some/command

ただし、以下を除くすべてのシェルでzsh引用符の拡張が必要であることに注意してください。

"$mycommand" its args

コマンドとゼロ番目以上の引数を保存するには、そのコマンドをサポートするシェルで配列を使用できますbashzsh

mycommand=(/path/to/some/command some fixed args)
"${mycommand[@]}" some other args

zsh取り除く前に

$mycommand some other args

ない限り固定パラメータ空いた。

答え2

bashでは、次の行が機能します。

mycommand=/usr/bin/find
$mycommand -type d

問題は、「/path/to/some/command」とそれが実行または試行する操作から発生する可能性があります。実物を見ずには申し上げにくいです。

関連情報