docker-composeのZSHマクロ置換 - _

docker-composeのZSHマクロ置換 - _

私はzshを使用していますが、私が知っている限り、bashとは異なりますが、ほとんど似ています。私はdocker-composeコマンドのマクロを作成することにしました。

dock-comp() {
   state="$2"
   if [ "$state" = "up" ]; then
      state='up -d'
   fi

   # For debugging
   echo "docker-compose -p $1 -f my/path/to/file.yml "$(echo "$state")""

   # The actual command that runs
   docker-compose -p $1 -f my/path/to/file.yml "$(echo "$state")"
}

したがって、これを実行するとうまくいきますdock-comp CONTAINER downが、実行されます。私が入力したものにを追加する必要があるかどうかをdock-comp CONTAINER up確認できます。up-d

> dock-comp CONTAINER up            
docker-compose -p CONTAINER -f my/path/to/file.yml up -d
No such command: up _d

Commands:
  build              Build or rebuild services
(etc)

最新の投稿です私は問題を見つけることができますが、同じパラメータを使用せずにエコーがこれを証明するので、それほど関連性がないと思います。しなければならない正しく処理されますが、bashは奇妙なので、明らかなものが欠けている可能性があります。

答え1

引用符はオプションではなく単一のコマンドとして扱われdocker-composeます。それはおそらく解析され、置き換えられた可能性があります。しかし、とにかく遅すぎました。up -dup-d-_

引用符と不要な内容を削除しechostate配列に変更すると(複数のパラメータが含まれる可能性があるため)、次の問題が解決されます。

dock-comp() {
   state=($2)
   if [[ $state[1] == up ]]; then
      state+=(-d)
   fi
   docker-compose -p "$1" -f my/path/to/file.yml $state
}

関連情報