Cygwin shell 脚本中的转义空格和其他特殊字符



我正在拔头发,试图让一个脚本在cygwin上工作。 这是我尝试运行的脚本的最新版本:

$ 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]"

这是我收到的错误消息:

$ ./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

您应该将其作为 bash 运行,并将参数存储为数组。另外,不要在空格中添加文字引号:

#!/bin/bash
VMRUN="/cygdrive/c/Program Files (x86)/VMware/VMware VIX/vmrun"
echo "VMRUN is [$VMRUN]"
ARGS=(-T ws start 'C:UsersredDocumentsVirtual Machinesmyvm-dev-006 (2)myvm-dev-006 (2).vmx')
echo "ARGS is [${ARGS[*]}]"
"$VMRUN" "${ARGS[@]}"

运行bash script.sh .

这可能是

你的问题...我遇到了同样的问题,直到我发现我的脚本有 Windows 特殊字符(cat -e script.ksh)......所以我对文件做了一个dos2unix,它开始按照我想要的方式流动

希望这是有用的

相关内容

最新更新