私は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 -d
up
-d
-
_
引用符と不要な内容を削除しecho
てstate
配列に変更すると(複数のパラメータが含まれる可能性があるため)、次の問題が解決されます。
dock-comp() {
state=($2)
if [[ $state[1] == up ]]; then
state+=(-d)
fi
docker-compose -p "$1" -f my/path/to/file.yml $state
}