windows
  • shell
  • cygwin
  • 2013-09-05 6 views 0 likes 
    0

    cygwin에서 스크립트를 실행하려고합니다. 여기에 내가 실행하려고 스크립트의 최신 버전입니다 :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 
    
    +0

    리눅스에서 cygwin이 없지만 작은 따옴표를 큰 따옴표로 바꾸고 백 슬래시를 제거하면됩니다.'VMRUN = "cygdrive/c/Program Files (x86)/VMware/VMware VIX/vmrun ". – iamauser

    답변

    1

    당신은 대신 떠들썩한 파티로 실행하고 배열로 인수를 저장해야합니다. 또한 공백에 따옴표를 추가하지 마십시오.

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

    관련 문제