ksh не может cp из местоположения с пробелом в нем?

#shell #unix #scripting #ksh

#оболочка #unix — система #сценарии #кш

Вопрос:

Я пытаюсь сделать следующее в ksh, но продолжаю получать сообщение cannot stat для команды cp:

  JMX_ROOT=/bfs-build/build-info/mep_mainline-Linux.latest/core/mainline/automation

 SMOKE_JMX_LOCATION=$JMX_ROOT/"Smoke Set"/*.*

 cp $SMOKE_JMX_LOCATION /var/tmp/tempor
 

Есть идеи, пробовали заключать различные переменные в кавычки, но безуспешно. Думаю, это как-то связано с пробелами в «Наборе дыма», но не знаю, как с этим работать.

Большое спасибо.

Комментарии:

1. также существует в unix и Linux

Ответ №1:

 JMX_ROOT=/bfs-build/build-info/mep_mainline-Linux.latest/core/mainline/automation
SMOKE_JMX_LOCATION="$(echo $JMX_ROOT/"Smoke Set"/*.*)"
cp "$SMOKE_JMX_LOCATION" /var/tmp/tempor
 

Комментарии:

1. Кроме *.* того, вероятно, следует изменить на * . Это не DOS.

Ответ №2:

  JMX_ROOT=/bfs-build/build-info/mep_mainline-Linux.latest/core/mainline/automation

  SMOKE_JMX_LOCATION=$JMX_ROOT/"Smoke Set"/*.*

  cp $SMOKE_JMX_LOCATION /var/tmp/tempor
 

Решает ли это вашу проблему? Добавление буквы «а» перед пробелом.

Комментарии:

1. Попробовал это, но получил: cp: не удается /bfs-build/build-info/mep_mainline-Linux.latest/core/mainline/automation/Smoke\': No such file or directory cp: cannot stat установить статистику /*.*’: нет такого файла или каталога

2. Нет, тоже не сработало, пришлось изменить его на следующее: SMOKE_JMX_LOCATION=$JMX_ROOT/Smoke */*.* Т.е. заменил пробел на подстановочный знак

Ответ №3:

попробуйте убрать пробел с помощью обратной косой черты

 SMOKE_JMX_LOCATION=$JMX_ROOT/Smoke Set/*.*