首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在cygwin shell脚本中转义空格和其他特殊字符

在cygwin shell脚本中转义空格和其他特殊字符
EN

Stack Overflow用户
提问于 2013-09-05 15:52:51
回答 2查看 3K关注 0票数 0

我正在拔我的头发,试着找个剧本来写雪佛兰的作品。下面是我正在尝试运行的脚本的最新版本:

代码语言:javascript
复制
$ cat start_vm_2.sh
#!/bin/sh

VMRUN='/cygdrive/c/\"Program Files (x86)\"/VMware/VMware\ VIX/vmrun"'
echo "VMRUN is [$VMRUN]"
ARGS='-T ws start \"C:\\Users\\red\\Documents\\Virtual Machines\\myvm-dev-006 \(2\)\\myvm-dev-006 \(2\).vmx\"'
echo "ARGS is [$ARGS]"

这是我得到的错误信息:

代码语言:javascript
复制
$ ./start_vm_2.sh
VMRUN is [/cygdrive/c/\"Program Files (x86)\"/VMware/VMware\ VIX/vmrun"]
ARGS is [-T ws start \"C:\\Users\\red\\Documents\\Virtual Machines\\myvm-dev-006 \(2\)\\myvm-dev-006 \(2\).vmx\"]
./start_vm_2.sh: line 8: /cygdrive/c/\"Program: No such file or directory
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-09-05 16:29:37

您应该以bash的形式运行它,并将参数存储为数组。此外,不要在空格中添加文字引号:

代码语言:javascript
复制
#!/bin/bash
VMRUN="/cygdrive/c/Program Files (x86)/VMware/VMware VIX/vmrun"
echo "VMRUN is [$VMRUN]"
ARGS=(-T ws start 'C:\Users\red\Documents\Virtual Machines\myvm-dev-006 (2)\myvm-dev-006 (2).vmx')
echo "ARGS is [${ARGS[*]}]"
"$VMRUN" "${ARGS[@]}"

运行bash script.sh

票数 1
EN

Stack Overflow用户

发布于 2018-08-02 18:27:43

这可能是你的问题。我也有同样的问题,直到我发现我的脚本有Windows特殊字符(cat -e script.ksh).所以我对文件做了一个dos2unix,它开始按我的意愿流动。

希望这是有用的

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18640847

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档