2016-04-15 5 views
0

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

Am пытается с помощью внешнего файла ш для вызова файлу Hadoop Sh

myfile.sh

# workingdir = /data1/some/path/lib 
WORKINGDIR=`cygpath -p -w -m "$WORKINGDIR"` 
# so the above in windows land is C:/some/path/lib 
# HADOOPCMD essentially is a call to hadoop.sh 
$HADOOPCMD jar $WORKINGDIR/myjar.jar 

hadoop.sh

echo "[email protected]" // still C:/some/path/lib 
exec "$JAVA" $JAVA_HEAP_MAX $HADOOP_OPTS $CLASS "[email protected]" 

Однако когда "$ @" расширяется в cygwin результирующий путь становится C: \ some \ path \ lib, а затем жалобы hadoop.sh, что он не может найти jar ... Недействительный JAR: C: \ some \ path \ lib

Однако, если бы мне пришлось жестко указать путь в myfile.sh; он работает

$HADOOPCMD jar C:/some/path/lib/myjar.jar 

Вопрос

  1. почему ехес командования "$ @" изменить/к \ в переменной WorkingDir?
  2. Почему работает жесткий путь?
  3. Как заставить это работать с переменной заменой?
+0

хмм .. я думаю, что я получил его на работу, указав $ WorkingDir поэтому команда $ HADOOPCMD банку «$ WorkingDir» /myjar.jar – sunny

+0

Общее правило заключается в «всегда указывайте свои переменные расширения». –

ответ

0

Цитирование переменную работает "$WORKINGDIR"/myjar.jar

Смежные вопросы