Я занимаюсь контейнерированием существующих продуктов моей компании и выделил базу данных MySQL в другой контейнер.Чтобы получить доступ к серверу MySQL в главном контейнере, я создал псевдоним в ./bashrc, чтобы при наличии команды:
mysql ...
На самом деле выполнялось следующее:
docker exec -it ${MYSQL_CONTAINER} mysql ...
Однако есликоманда включила левый треугольник для добавления файла, например:
mysql < test.sql
У меня есть псевдоним, скопируйте файл и запустите его, но bash, где находится основной контейнер, читает левый треугольник как отдельный компонентв отличие от части списка аргументов.
Как я могу заставить свой псевдоним принимать левый треугольник как часть аргументов?Я не могу заключить часть «
function mysql() {
$1
$2
$3
$4
if [[ $1 == "--defaults-file=my.cnf" ]] && [[ ! $2 ]]; then
docker exec -it ${MYSQL_CONTAINER} mysql $1
elif [[ $1 == "--defaults-file=my.cnf" ]] && [[ $2 = "<" ]]; then
#docker cp $3 $(docker inspect -f '{{.Id}}' ${MYSQL_CONTAINER}):/docker-entrypoint-initdb.d/
#docker exec ${MYSQL_CONTAINER} sh -c "mysql $1 $2 docker-entrypoint-initdb.d/$3"
elif [[ $1 == "-uroot" ]] && [[ ! $3 ]]; then
docker exec -it ${MYSQL_CONTAINER} mysql $1 $2
elif [[ $1 == "-uroot" ]] && [[ $3 = "<" ]]; then
docker cp $4 $(docker inspect -f '{{.Id}}' ${MYSQL_CONTAINER}):/docker-entrypoint-initdb.d/
docker exec ${MYSQL_CONTAINER} sh -c "mysql $1 $2 $3 docker-entrypoint-initdb.d/$4"
else
docker exec -it ${MYSQL_CONTAINER} mysql $1
fi
}