微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

bash脚本无法在Windows的Linux子系统上处理空间和破折号

如何解决bash脚本无法在Windows的Linux子系统上处理空间和破折号

我正在Windows 10计算机上运行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

curl: option -: is unknown

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

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

fail in debug mode

如果我从调试模式手动运行命令,则可以下载文件并将其保存在正确的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

command produced from failing script working ok when executing manually

然后我将此命令复制到脚本中

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

the same command copied in a script working ok

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。