簡體   English   中英

在Cygwin Shell腳本中轉​​義空格和其他特殊字符

[英]escaping spaces and other special characters in cygwin shell script

我正在拔頭發,嘗試獲取可在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:\Users\red\Documents\Virtual Machines\myvm-dev-006 (2)\myvm-dev-006 (2).vmx')
echo "ARGS is [${ARGS[*]}]"
"$VMRUN" "${ARGS[@]}"

運行bash script.sh

這可能是您的問題...在遇到我的腳本具有Windows特殊字符(cat -e script.ksh)之前,我遇到了同樣的問題...所以我對文件執行了dos2unix,並且隨着我的使用它開始流動通緝

希望這是有用的

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM