저는 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
}