2016-05-02 3 views
2

Im пытается запустить команду, используя мВ скрипт, но он дает мнеПроблема в мв команды в сценарии оболочки

mv: cannot stat `/opt/logs/merchantportal/logger.log.20160501.*': No such file or directory 
mv: cannot stat `/opt/logs/merchantapi/logger.log.20160501.*': No such file or directory 

// ЭТО МОЯ SHELL SCRIPT

#!/bin/bash 
now="$(date +'%Y%m%d')" 
merchantPortalLogsPath="/opt/logs/merchantportal" 
merchantApiLogsPath="/opt/logs/merchantapi" 
currentDate="$(date +%Y%m%d)" 
olderDate="$(date "+%Y%m%d" -d "1 days ago")" 
merchantPortalLogsPathBackup=$merchantPortalLogsPath"."$olderDate 
merchantApiLogsPathBackup=$merchantApiLogsPath"."$olderDate 

mkdir $merchantPortalLogsPathBackup 
mkdir $merchantApiLogsPathBackup 
echo $merchantPortalLogsPath"/logger.log."$olderDate".*" $merchantPortalLogsPathBackup"/" 
echo $merchantApiLogsPath"/logger.log."$olderDate".*" $merchantApiLogsPathBackup"/" 

mv $merchantPortalLogsPath"/logger.log."$olderDate".*" $merchantPortalLogsPathBackup"/" 
mv $merchantApiLogsPath"/logger.log."$olderDate".*" $merchantApiLogsPathBackup"/" 

// НО КАТАЛОГ СОЗДАЕТСЯ УСПЕШНО

enter image description here

+0

См. Здесь: http://stackoverflow.com/questions/22074999/using-mv-command-wont-recognize-as-wildcard Очень хорошая рецензия на вашу проблему. – jgshawkey

ответ

5
".*" 

Помещение * внутри двойных кавычек предотвратит обработку оболочки в качестве подстановочного знака и вместо этого возьмет ее как буква *. Вместо этого измените свой сценарий так, чтобы он не удвоил цитату *. Например:

mv ${merchantPortalLogsPath}/logger.log.${olderDate}.* ${merchantPortalLogsPathBackup}/ 
mv ${merchantApiLogsPath}/logger.log.${olderDate}.* ${merchantApiLogsPathBackup}/ 

Примечание: Технически должны фактически двойные кавычки переменных расширения для обработки путей с пробелами и другими специальными символами в них. Но я не показал, что сосредоточиться только на проблеме.

+0

отлично, он работает для меня –

-2

Да, существуют каталоги журнала, но файлы журнала в пределах в этих каталогах нет. Поскольку mv не может перемещать файл журнала, который не существует, он жалуется.

Примечание: Сообщение об ошибке мв обеспечивает («Нет такого файла или каталога») является неопределенным, и, возможно, багги - если он говорит только «Нет такого файла» (и не оставить пользователю интересно, если есть отсутствующий directory), это было бы менее загадочным.