Как разместить пробелы в переменной в скрипте оболочки bash? - PullRequest
3 голосов
/ 10 февраля 2011

Надеюсь, это должно быть просто ... Вот мой файл test.sh:

#!/bin/bash
patch_file="/home/my dir/vtk.patch"
cmd="svn up \"$patch_file\""
$cmd

Обратите внимание на пробел в "моей директории". Когда я выполню это,

$ ./test.sh 
Skipped '"/home/my'
Skipped 'dir/vtk.patch"'

Я понятия не имею, как разместить место в переменной и по-прежнему выполнять команду. Но выполнение этого в оболочке bash работает без проблем.

$ svn up "/home/my dir/vtk.patch"   #WORKS!!!

Любые предложения будут с благодарностью! Я использую Bash от Cygwin на Windows.

Ответы [ 2 ]

4 голосов
/ 10 февраля 2011

Используйте eval $ cmd вместо простого $ cmd

2 голосов
/ 10 февраля 2011

Пробовали ли вы пробел?
Как правило, оболочкам UNIX не нравятся нестандартные символы в именах файлов или папок.Обычный способ справиться с этим - избежать обидного персонажа.Попробуйте:

patch_file="/home/my\ dir/vtk.patch"

Обратите внимание на обратную косую черту.

...