[英]cp command don't create directory in a sh\bash script, why?
我是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命令会出现问题,因为它尝试执行这些行时:
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”:文件或目录不存在
实际上,我在shell中的输出是以下内容:
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
问题是什么? 我究竟做错了什么?
特纳克斯
安德里亚
您需要先创建目录,然后再复制到目录中,查看命令mkdir
尝试添加
mkdir -p ${ApplicationName}${CURRENT_VERSION}ubuntu1-i386/usr/share/${ApplicationName}/jre1.6.0_35
和
mkdir -p ${ApplicationName}${CURRENT_VERSION}ubuntu1-amd64/usr/share/${ApplicationName}/jre1.6.0_35
就在两条cp
线之前。
在这里查看如何复制文件和创建目录(如果不存在):
您可以检查目录是否存在,如下所示:
if [ -d ~/directorypath ]; then
echo "exist!"
else
mkdir ~/directorypath
fi
您可以在一个代码行中完成此操作:
if [ ! -d ~/directorypath ]; then mkdir ~/directorypath; fi
首先为给定路径创建目录
mkdir /home/test
然后将文件从目标复制到源
cp /home.a.txt /home/test
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.