cygwin中的Bash脚本找不到现有文件

时间:2019-04-02 19:26:05

标签: bash docker cygwin

我编写了一个简单的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上,脚本运行良好。我升级到Windows的Win 10 Pro和Docker,并在Cygwin / Babun中运行脚本时,反而得到了

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

问题是,这正是文件所在的位置。如果我运行脚本与该路径一起使用的命令,则它将起作用。我似乎无法弄清楚发生了什么(或如何像使用Docker Terminal一样使用终端?)。

完整脚本:

#!/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

0 个答案:

没有答案