Я очень новый в сценарии sh/bash, и у меня есть следующая проблема:Команда cp не создает каталог в сценарии sh bash, почему?
У меня есть сценарий, который создает какой-то каталог и копирует в него некоторые файлы, но, похоже, не работает !!!
В моем сценарии у меня есть следующие строки кода:
# Creazione Nuovo Pacchetto per Ubuntu
JRE_I386="jre1.6.0_35-i386"
JRE_AMD64="jre1.6.0_35-x86_64"
ApplicationName="XCloud"
# Se il primo parametro è una stringa vuota mostra il messaggio di errore ed esce:
if [ -z $1 ]; then
echo "Usage: createpkg.sh <rev package>"
exit
# Altrimenti setta la variabile CURRENT_VERSION con il valore del parametro di input passato:
else
CURRENT_VERSION=$1
fi
echo ---------------------------------------------------------------------------------------------------
echo ---------------------------------------------------------------------------------------------------
echo
echo CREAZIONE NUOVO PACCHETTO ${ApplicationName}${CURRENT_VERSION}
echo
echo ---------------------------------------------------------------------------------------------------
echo ---------------------------------------------------------------------------------------------------
# Verifica esistenza ambiente prima di generare la nuova versione. Se esiste torna ERRORE:
if [ -e "${ApplicationName}${CURRENT_VERSION}ubuntu1-i386" ]; then
echo "Errore: la cartella contenente la nuova versione da creare gia' esiste"
exit
fi
if [ -e "${ApplicationName}${CURRENT_VERSION}ubuntu1-amd64" ]; then
echo "Errore: la cartella contenente la nuova versione da creare gia' esiste"
exit
fi
# Copia dell' alberatura completa (recursive and force), copia PACKAGE nella destinazione:
cp -Rf PACKAGE ${ApplicationName}${CURRENT_VERSION}ubuntu1-i386
cp -Rf PACKAGE ${ApplicationName}${CURRENT_VERSION}ubuntu1-amd64
echo "Copia dell' alberatura completata"
# Copia della JRE corretta:
cp -Rf ../JRE/${JRE_I386} ${ApplicationName}${CURRENT_VERSION}ubuntu1-i386/usr/share/${ApplicationName}/jre1.6.0_35
cp -Rf ../JRE/${JRE_AMD64} ${ApplicationName}${CURRENT_VERSION}ubuntu1-amd64/usr/share/${ApplicationName}/jre1.6.0_35
echo "Copia della JRE corretta completata"
......................................................................................
......................................................................................
SOME OTHER STUFF
......................................................................................
......................................................................................
Проблема возникает с последним 2 ф команды, потому что, когда он попытаться выполнить эти строки:
cp -Rf ../JRE/${JRE_I386} ${ApplicationName}${CURRENT_VERSION}ubuntu1-i386/usr/share/${ApplicationName}/jre1.6.0_35
cp -Rf ../JRE/${JRE_AMD64} ${ApplicationName}${CURRENT_VERSION}ubuntu1-amd64/usr/share/${ApplicationName}/jre1.6.0_35
когда Я запускаю скрипт, в оболочке, он говорит мне что-то, что по-английски звучит так: невозможно создать каталог «DIRECTORYNAME»: Файл или каталог не существует
Infact мой выход в оболочке заключается в следующем:
cp: impossibile creare la directory "XCloud1ubuntu1-i386/usr/share/XCloud/jre1.6.0_35": File o directory non esistente
cp: impossibile creare la directory "XCloud1ubuntu1-amd64/usr/share/XCloud/jre1.6.0_35": File o directory non esistente
В чем проблема? Что я делаю не так?
Tnx
Andrea
Вы пытались сделать точно такой же 'cp' в терминальной стадии, шаг за реконструировать этот вопрос? Может быть, есть опечатки для пути или у вас нет правильных прав ?! – EverythingRightPlace
Посмотрите здесь: http: // stackoverflow.com/questions/1529946/linux-copy-and-create-destination-dir-if-it-does-not-exist – Refael