Bash on cygwin:没有这样的文件或目录

Met*_*ome 3 bash cygwin

commonMongo=s:/programs/mongodb/
dbpath=$commonMongo"data/"
logFile=$commonMongo"log.txt"
mongoProg=s:/programs/mongodb/mongodb/
mongoBin=$mongoProg"bin/"
mongod=$mongoBin"mongod.exe"
a=$1
if [ "$a" == "start" ];then
    "${mongod} --logpath ${logFile} --logappend --dbpath ${dbpath} &"
elif [ "$a" == "repair" ];then
    "${mongod} --dbpath ${dbpath} --repair"
else
    echo "Incorrect usage"
fi
Run Code Online (Sandbox Code Playgroud)

./init.sh:line 11:s:/programs/mongodb/mongodb/bin/mongod.exe --dbpath s:/ programs/mongodb/data/--repair:没有这样的文件或目录

调用打印的命令工作正常:

s:/programs/mongodb/mongodb/bin/mongod.exe --dbpath s:/ programs/mongodb/data/--repair

小智 8

例如,如果你把DOS路径放在引号中,Cygwin实际上会为你做魔术

cd "C:\Program Files\"
Run Code Online (Sandbox Code Playgroud)


kro*_*ock 5

Cygwin 无法识别 Windows 驱动器号,例如s:,请/cygdrive/s改用。您的 cygwin 命令应如下所示:

/cygdrive/s/programs/mongodb/mongodb/bin/mongod.exe --dbpath s:/programs/mongodb/data/ --repair
Run Code Online (Sandbox Code Playgroud)

请注意,您传递给可执行文件的类似参数的路径是 Windows 格式,mongod.exe而不是 Cygwin 二进制文件。

为了方便起见,您可以添加mongod.exe您的路径,然后您不需要指定它所在的目录。