コマンド名が変数内のステートメントを実行しようとしています。たとえば、
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
コマンドとゼロ番目以上の引数を保存するには、そのコマンドをサポートするシェルで配列を使用できますbash
。zsh
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」とそれが実行または試行する操作から発生する可能性があります。実物を見ずには申し上げにくいです。