linux - cp 命令不在 sh\bash 脚本中创建目录,为什么?

标签 linux bash shell ubuntu sh

我对 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

当我在 shell 中执行脚本时,它对我说一些英语听起来像:不可能创建目录“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

有什么问题吗?我做错了什么?

Tnx

安德里亚

最佳答案

在复制到其中之前您需要创建目录,请查看命令 mkdir

关于linux - cp 命令不在 sh\bash 脚本中创建目录,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19522124/

相关文章:

linux - 从内核内部按名称列出所有 Linux 网络命名空间

linux - 如何使用CMake更新库路径?

linux - 正则表达式 - 查找具有一个字符串的事件

linux - 如何在shell脚本中获取单行数据

bash - 设置 PROMPT_COMMAND 和 PS4(在命令启动时有日期和棘手的打印路径)

bash - 计算一列中具有特定符号的行数(来自 grep 的结果)?

java - 在 JSch 中使用 SSH "exec" channel 执行 sudo

linux - 带有通配符参数的 Sudoers 命令与长度为 0 的参数不匹配

python - 如何将文件中的每一行作为参数传递给脚本?

bash - 如何使用ffmpeg有序地合并目录中的所有视频?