bash脚本无法在windows linux子系统上处理空格和破折号

bash脚本无法在windows linux子系统上处理空格和破折号,bash,shell,path,space,hyphen,Bash,Shell,Path,Space,Hyphen,我在Windows10机器上运行Linux子系统。我编写了一个脚本,从jenkins服务器下载最新版本,重命名并保存在Windows中映射的Onedrive上。问题是在运行脚本时,路径中的空格和破折号没有得到很好的处理 脚本如下所示: #!/bin/bash path=$(echo "OneDrive - Atos") echo $path echo "/mnt/c/Users/A474998/$xpath/" filename=$(echo "

我在Windows10机器上运行Linux子系统。我编写了一个脚本,从jenkins服务器下载最新版本,重命名并保存在Windows中映射的Onedrive上。问题是在运行脚本时,路径中的空格和破折号没有得到很好的处理

脚本如下所示:

#!/bin/bash
path=$(echo "OneDrive - Atos")
echo $path
echo "/mnt/c/Users/A474998/$xpath/"
filename=$(echo "\"/mnt/c/Users/A474998/$path/___Software/SIP_CP100.img\"")
echo $filename
curl http://jenkins.devices-dev.global-intra.net/view/mainline/job/we1_cp100_sip_arm_nightly/lastStableBuild/artifact/vobs/Opera_Build/Nightly/SIP/WP_LO_CP100/cruise/opera_bind.SIP.WP_LO.nand.img --output $filename
这是我运行脚本时的输出

bokos@DESKTOP-DLETB9D:~$ ./testget
OneDrive - Atos
/mnt/c/Users/A474998//
"/mnt/c/Users/A474998/OneDrive - Atos/___Software/SIP_CP100.img"
curl: option -: is unknown
curl: try 'curl --help' or 'curl --manual' for more information

我在调试模式下运行这个脚本,这是输出

bokos@DESKTOP-DLETB9D:~$ sh -x ./testget
+ echo OneDrive - Atos
+ path=OneDrive - Atos
+ echo OneDrive - Atos
OneDrive - Atos
+ echo /mnt/c/Users/A474998//
/mnt/c/Users/A474998//
+ echo "/mnt/c/Users/A474998/OneDrive - Atos/___Software/SIP_CP100.img"
+ filename="/mnt/c/Users/A474998/OneDrive - Atos/___Software/SIP_CP100.img"
+ echo "/mnt/c/Users/A474998/OneDrive - Atos/___Software/SIP_CP100.img"
"/mnt/c/Users/A474998/OneDrive - Atos/___Software/SIP_CP100.img"
+ curl http://jenkins.devices-dev.global-intra.net/view/mainline/job/we1_cp100_sip_arm_nightly/lastStableBuild/artifact/vobs/Opera_Build/Nightly/SIP/WP_LO_CP100/cruise/opera_bind.SIP.WP_LO.nand.img --output "/mnt/c/Users/A474998/OneDrive - Atos/___Software/SIP_CP100.img"
curl: option -: is unknown
curl: try 'curl --help' or 'curl --manual' for more information

如果我从调试模式手动运行该命令,我可以下载该文件并将其保存在正确的Onedrive位置

bokos@DESKTOP-DLETB9D:~$ curl http://jenkins.devices-dev.global-intra.net/view/mainline/job/we1_cp100_sip_arm_nightly/lastStableBuild/artifact/vobs/Opera_Build/Nightly/SIP/WP_LO_CP100/cruise/opera_bind.SIP.WP_LO.nand.img --output "/mnt/c/Users/A474998/OneDrive - Atos/___Software/SIP_CP100.img"
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 22.2M  100 22.2M    0     0   747k      0  0:00:30  0:00:30 --:--:--  470k

然后在脚本中复制此命令

#!/bin/bash
curl http://jenkins.devices-dev.global-intra.net/view/mainline/job/we1_cp100_sip_arm_nightly/lastStableBuild/artifact/vobs/Opera_Build/Nightly/SIP/WP_LO_CP100/cruise/opera_bind.SIP.WP_LO.nand.img --output "/mnt/c/Users/A474998/OneDrive - Atos/___Software/SIP_CP100.img"
当我执行它时,文件将被下载并保存在正确的位置

bokos@DESKTOP-DLETB9D:~$ ./testget
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 22.2M  100 22.2M    0     0   790k      0  0:00:28  0:00:28 --:--:--  868k

我试过很多与“”的组合`` 我无法重命名Onedrive的路径以删除空间和破折号。 所以我真的很困惑,我不知道我做错了什么。
任何帮助都将不胜感激。提前感谢您的时间。

双引号引用变量:
curlhttp://jenkins.devices-dev.global-intra.net/view/mainline/job/we1_cp100_sip_arm_nightly/lastStableBuild/artifact/vobs/Opera_Build/Nightly/SIP/WP_LO_CP100/cruise/opera_bind.SIP.WP_LO.nand.img --输出“$filename”
hi@choroba我尝试过这是输出
bokos@DESKTOP-DLETB9D:~$./testget%Total%已接收%Xferd平均速度时间当前数据加载上载总花费的左速度0 0 0 0--::-->------------------0警告:失败要创建文件“/mnt/c/Users/A474998/OneDrive-警告:Atos/\uuuuu Software/SIP\u CP100.img”:没有这样的文件或目录0 22.2M 0 3529 0 5070 0 1:16:33--:::--1:16:33 5063 curl:(23)写入正文失败(0!=3529)
您没有
“mnt
目录。您有
mnt
目录。所以不要做
$(echo“\”
,只要
filename=“字符串”
GREAT..它现在起作用了!谢谢你们!双引号引用变量:
curlhttp://jenkins.devices-dev.global-intra.net/view/mainline/job/we1_cp100_sip_arm_nightly/lastStableBuild/artifact/vobs/Opera_Build/Nightly/SIP/WP_LO_CP100/cruise/opera_bind.SIP.WP_LO.nand.img --输出“$filename”
hi@choroba我尝试过这是输出
bokos@DESKTOP-DLETB9D:~$./testget%Total%已接收%Xferd平均速度时间当前数据加载上载总花费的左速度0 0 0 0--::-->------------------0警告:失败要创建文件“/mnt/c/Users/A474998/OneDrive-警告:Atos/\uuuuu Software/SIP\u CP100.img”:没有这样的文件或目录0 22.2M 0 3529 0 5070 0 1:16:33--:::--1:16:33 5063 curl:(23)写入正文失败(0!=3529)
您没有
“mnt
目录。您有
mnt
目录。所以不要做
$(echo“\”
,只要
filename=“字符串”
就好了。.它现在起作用了!谢谢你们!