UNIX shell脚本,用于读取文件,复制文件和删除文件

时间:2013-11-01 16:55:57

标签: shell unix

您好我在UNIX中编写一个shell脚本,它读取目录并将文件复制到另一个目录,然后删除第一个目录中的文件

我试过这个,但它不起作用: -

files"=/project/scripts/input/"

for f in $files; do
    [ mv /project/scripts/input/$f.txt /project/scripts/output/$f.xml

    rm /project/scripts/input/$f.txt ]
else

    echo "Nothing to process will try later"

    exit

fi

2 个答案:

答案 0 :(得分:0)

可能类似于

cd $SourceDir && ( tar cfz - * | ( cd $TargetDir && tar xfz - ) )

(从头开始/未经测试......)

答案 1 :(得分:0)

由于脚本的结构严重破坏,因此很难确定脚本的真实意图。因此,通过一些猜测,我将给出一些带有一些提示的伪答案:

  • files"=/project/scripts/input/" - 我假设这一行的目的是将变量files设置为/project/scripts/input/目录中的所有文件。但这条线不会那样做。相反,因为"=/project/scripts/input/"部分是双引号,所以它按字面展开,没有给=赋予特殊含义(变量赋值)。因此,整行最终都是尝试执行files=/project/scripts/input/,即执行在相对路径input/下找到的目录files=/project/scripts/。根本不会设置变量$files
  • 我认为您已经知道else,而fi必须以某种if语句继续进行。如果你编辑它以包含实际的if语句(编辑答案本身,不要发表评论),你的问题会更有意义。
  • for ...; do语句必须始终后跟done语句以指示循环结束
  • []始终专门用于测试条件。见http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html。正在测试的条件将在[]之内,然后会发生一些条件操作,具体取决于条件的结果。
  • 如我的评论中所述,mv会自动删除源文件,因此不需要rm

简而言之,你最好编辑你的问题,以提供你所询问的完整脚本,以及你期望它做什么。