您好我在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
答案 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
。简而言之,你最好编辑你的问题,以提供你所询问的完整脚本,以及你期望它做什么。