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

17 浏览
0 Comments

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

我对sh/bash脚本非常陌生,我有以下问题:\n我有一个创建目录并将文件复制到其中的脚本,但似乎不起作用!\n在我的脚本中,我有以下代码行:\n

# 创建Ubuntu的新包
JRE_I386="jre1.6.0_35-i386"
JRE_AMD64="jre1.6.0_35-x86_64"
ApplicationName="XCloud"
# 如果第一个参数为空字符串,则显示错误消息并退出:
if [ -z $1 ]; then
    echo "使用方法:createpkg.sh "
    exit
# 否则,将CURRENT_VERSION变量设置为传入的输入参数的值:
else
    CURRENT_VERSION=$1      
fi
echo ---------------------------------------------------------------------------------------------------
echo ---------------------------------------------------------------------------------------------------
echo 
echo 创建新包 ${ApplicationName}${CURRENT_VERSION}
echo 
echo ---------------------------------------------------------------------------------------------------
echo ---------------------------------------------------------------------------------------------------
# 在生成新版本之前检查环境是否存在。如果存在,则返回错误:
if [ -e "${ApplicationName}${CURRENT_VERSION}ubuntu1-i386" ]; then
    echo "错误:包含要创建的新版本的文件夹已存在"
    exit
fi
if [ -e "${ApplicationName}${CURRENT_VERSION}ubuntu1-amd64" ]; then
    echo "错误:包含要创建的新版本的文件夹已存在"
    exit
fi
# 复制整个文件树(递归和强制),将PACKAGE复制到目标文件夹:
cp -Rf PACKAGE ${ApplicationName}${CURRENT_VERSION}ubuntu1-i386
cp -Rf PACKAGE ${ApplicationName}${CURRENT_VERSION}ubuntu1-amd64
echo "文件树复制完成"
# 复制正确的JRE:
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 "正确的JRE复制完成"
......................................................................................
......................................................................................
其他一些内容
......................................................................................
......................................................................................

\n问题出现在最后两个cp命令,因为当它尝试执行以下行时:\n

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

\n当我执行脚本时,在shell中它告诉我一些英文听起来像:无法创建目录\"DIRECTORYNAME\":文件或目录不存在\n实际上,我的shell输出如下:\n

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

\n问题是什么?我做错了什么吗?\n谢谢\nAndrea

0
0 Comments

在sh/bash脚本中,使用cp命令时不会创建目录,那么为什么会出现这个问题呢?

在Linux中,如果想要复制文件并在目标目录不存在时创建目录,可以使用以下方法:

if [ -d ~/directorypath ]; then
   echo "exist!"
else
   mkdir ~/directorypath
fi

或者可以将其简化为一行代码:

if [ ! -d ~/directorypath ]; then mkdir ~/directorypath; fi

或者使用以下代码:

test -d ~/directorypath || mkdir ~/directorypath

或者直接使用以下代码:

mkdir -p ~/directorypath

其中,mkdir -p命令可以一次性创建多个目录,例如:

mkdir -p ~/dir1/dir2/dir3 #创建3个目录

通过以上代码,我们可以解决cp命令不会创建目录的问题。

0
0 Comments

问题:在sh/bash脚本中,为什么cp命令不会创建目录?

原因:

1. 在使用cp命令之前,没有手动创建目标目录。

2. 在执行cp命令时,可能存在目录路径错误或者拼写错误。

解决方法:

1. 在执行cp命令之前,使用mkdir命令手动创建目标目录。

2. 在cp命令中添加-v参数,以便查看详细的复制信息,以便发现错误。

下面是一个示例解决方法:

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 -Rf PACKAGE ${ApplicationName}${CURRENT_VERSION}ubuntu1-i386
cp -Rf PACKAGE ${ApplicationName}${CURRENT_VERSION}ubuntu1-amd64
echo "Copia dell' alberatura completata"

如果问题仍然存在,可以尝试在第一个cp命令中添加-v参数,以查看复制过程中是否存在错误。

cp -Rfv source destination

通过以上方法,可以解决cp命令在sh/bash脚本中不创建目录的问题。

0
0 Comments

(cp命令在sh / bash脚本中不会创建目录,为什么?)

在使用cp命令复制文件之前,需要先创建目录。可以使用mkdir命令来创建目录。

在脚本中使用cp命令复制文件时,如果目标目录不存在,cp命令不会自动创建目录。这可能会导致脚本执行失败,因为文件无法复制到不存在的目录中。

解决这个问题的方法是在使用cp命令之前,添加一个mkdir命令来创建目标目录。这样,即使目录不存在,也可以成功复制文件。

以下是一个示例脚本,演示了如何创建目录并复制文件:

#!/bin/bash
# 创建目标目录
mkdir -p /path/to/destination
# 复制文件
cp /path/to/source/file /path/to/destination

在上述脚本中,我们使用mkdir命令创建了目标目录`/path/to/destination`。然后,我们使用cp命令将源文件`/path/to/source/file`复制到目标目录中。

通过在脚本中添加mkdir命令,我们确保了目标目录存在,从而避免了cp命令失败的问题。

在使用cp命令复制文件之前,需要先创建目标目录。如果目录不存在,cp命令不会自动创建目录,可能导致脚本执行失败。为了解决这个问题,可以在脚本中使用mkdir命令来创建目标目录。这样,即使目录不存在,也可以成功复制文件。

0