在同一脚本中创建文件夹然后将文件移动到其中时出现问题



在shell脚本中创建文件后,我在将文件移动到文件夹中时遇到问题。

我的脚本看起来像:

#!/bin/bash
echo -e "Processing33[36m" $1 "33[0mwith the German script";
if [ ! -d ${1%.dat} ]; then
   echo -e "making directory33[33m" ${1%.dat} "33[0msince it didn't exist..."; 
   mkdir ${1%.dat};
fi

处理发生在这里。。。(与问题无关)

if [ -d ${1%.dat} ]; then
   mv useragents_$1 /${1%.dat}/useragents_$1;
   mv summary_$1 /${1%.dat}/summary_$1;
   more /${1%.dat}/useragents_$1;
else
   echo -e "33[31mERROR: cannot move files to folder.33[0m";
fi

正如你所看到的,如果它不存在于顶部,我会创建文件夹,然后如果它存在,我会将文件移动到底部的文件夹中,问题是它没有及时创建文件夹来移动文件(我假设),所以当它到达较低的代码时,我只会得到ERROR。

我尝试使用睡眠5,但它只会减慢脚本的速度,对ERROR没有影响。

我真的很感激你的建议。

以下错误:

mv: cannot move `useragents_100_stns2_stns6.dat' to `/100_stns2_stns6/useragents_100_stns2_stns6.dat': No such file or directory
mv: cannot move `summary_100_stns2_stns6.dat' to `/100_stns2_stns6/summary_100_stns2_stns6.dat': No such file or directory
/100_stns2_stns6/useragents_100_stns2_stns6.dat: No such file or directory

通过1

您的支票:

if [ ! -d ${1%.dat} ]; then

应该是:

if [ -d ${1%.dat} ]; then

您创建了目录;如果它是一个目录,就把东西移到里面。

有问题的打字

通过2

您创建:

mkdir ${1%.dat}

你试图移动文件:

mv useragents_$1 /${1%.dat}/useragents_$1;

请注意,与create相比,move中的前导斜杠。保持一致。

你确定这部分吗?它使用根目录。

/${1%.dat}/summary_$1;

你可能想这样做:

${1%.dat}/summary_$1;

它允许您将文件移动到当前目录中的目录中。

最新更新