Bash скрипт в cygwin не может найти существующий файл - PullRequest
3 голосов
/ 02 апреля 2019

Я написал простой bash-скрипт для запуска команды docker-compose, пытаясь запустить ее из любого места.

path="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
docker-compose -f "$path/docker-compose.yml" -f "$path/docker-compose.$env.yml" up $DETACHED $service

Ранее я работал в Windows 10 Home с помощью Docker Toolbox, а в Docker Terminal скрипт работал нормально. Я обновился до Win 10 Pro и Docker для Windows, и когда я запускаю скрипт в Cygwin / Babun, я вместо этого получаю

.FileNotFoundError: [Errno 2] No such file or directory: '/f/www/phpDM/docker-compose.yml'

Проблема в том, что файл находится именно там. Если я запускаю команду, которую скрипт использует с этим путем, она работает. Кажется, я не могу понять, что происходит (или как я могу использовать терминал, как любой другой терминал Docker?).

Полный скрипт:

#!/bin/bash

env="dev"
for opt in $@; do
    parsed=0
    case $opt in
        "-d")
            DETACHED="-d"
            parsed=1
            ;;
        "-e")
            env=$2
            valid=0
            valid_envs=("dev" "prod")
            for valid_env in ${valid_envs[@]}; do
                if [[ $env == $valid_env ]]; then
                    valid=1
                    break
                fi
            done
            if [ $valid == 0 ]; then
                env="dev"
            fi
            shift
            parsed=1
            ;;
    esac

    if [[ $parsed == 1 ]]; then
        shift
    fi
done

if [[ $# == 1 ]]; then
    service=$1
fi

path="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
docker-compose -f "$path/docker-compose.yml" -f "$path/docker-compose.$env.yml" up $DETACHED $service
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...