cygpath与变量作为unix到windows转换的输入不一致

cygpath与变量作为unix到windows转换的输入不一致,windows,bash,shell,cygwin,cygpath,Windows,Bash,Shell,Cygwin,Cygpath,我有一个bash脚本,提示用户拖放一个文件作为输入,然后我需要将该路径转换为windows样式的路径,以便将其用作正在调用的.exe的参数: echo -e "\nPlease drag and drop your input audio file into this window and hit Enter\n" read inputfile inputfilewin=$(cygpath -w -a "${inputfile}") echo "inputfile: $inputfile"

我有一个bash脚本,提示用户拖放一个文件作为输入,然后我需要将该路径转换为windows样式的路径,以便将其用作正在调用的.exe的参数:

echo -e "\nPlease drag and drop your input audio file into this window and hit Enter\n"
read inputfile

inputfilewin=$(cygpath -w -a "${inputfile}")

echo "inputfile: $inputfile"
echo "inputfilewin: $inputfilewin"
这适用于没有空格的路径,但my Box Sync文件夹会生成如下响应:

C:\cygwin\home\jimbob\'\cygdrive\c\Users\jimbob\Box Sync\myscripts\testscript\6ch.wav'
但是,如果我只是在命令行cygpath-w-a上键入并拖放同一个文件,我会返回正确的路径:

C:\Users\jimbob\Box Sync\myscripts\testscript\6ch.wav
请帮帮我,我就是不能让它按我需要的方式工作

$ echo  $a
/cygdrive/c/Program Files/Autodesk/DWG TrueView 2016 - English
因此,根据您需要的逃生次数:

$ cygpath  -w "$(echo -n $a |sed -e 's/ /\ /g')"
C:\Program Files\Autodesk\DWG TrueView 2016 - English

$ cygpath  -w "$(echo -n $a |sed -e 's/ /\\ /g')"
C:\Program\ Files\Autodesk\DWG\ TrueView\ 2016\ -\ English
因此,根据您需要的逃生次数:

$ cygpath  -w "$(echo -n $a |sed -e 's/ /\ /g')"
C:\Program Files\Autodesk\DWG TrueView 2016 - English

$ cygpath  -w "$(echo -n $a |sed -e 's/ /\\ /g')"
C:\Program\ Files\Autodesk\DWG\ TrueView\ 2016\ -\ English

感谢您的回复,我在开始时仍然得到了这一点:
C:\cygwin\home\jsmit\'\cygdrive\C\Users\jimbob`
我在脚本中使用了这一点:
inputfilewin=$(cygpath-w-a“$(echo-n$inputfile | sed-e's/\/g”)
echo${inputfile}的输出是什么?谢谢您的回复,尽管如此,我还是在一开始就得到了这一点:
C:\cygwin\home\jsmit\'\cygdrive\C\Users\jimbob`
我在脚本中使用了这一点:
inputfilewin=$(cygpath-w-a“$(echo-n$inputfile | sed-e's/\/g”)
echo${inputfile}的输出是什么?