从目录外部处理文件

时间:2014-01-06 16:16:34

标签: bash unix scripting directory

我正在尝试为eact .prt文件创建.info文件。

但是我需要从另一个目录执行ir,并且每次都需要指向一个新目录。

到目前为止我已经

#!/bin/bash
DP_DATE= cat /tmp/dp_date.txt
FOLDER= "/transfer/report_archive/preprod/$DP_DATE/"

for f in $FOLDER
do
for file in *.prt
do 
    [ -f ".info.$file" ] || wc -c < "$file" >> ".info.$file"
done
done

我不确定这是否可行!

任何帮助将不胜感激

2 个答案:

答案 0 :(得分:1)

在作业中=之后,您不能有空格。要分配命令的输出,您必须用$(...)或反引号包装它。

要处理另一个目录中的文件,最简单的方法是在处理目录之前cd到目录。我在循环内的子shell中执行它,以便在处理下一个目录之前它将返回到原始目录。

#!/bin/bash
DP_DATE=$(cat /tmp/dp_date.txt)
FOLDER="/transfer/report_archive/preprod/$DP_DATE/"

for f in $FOLDER
do ( # Subshell so cd is temporary
    cd "$f"
    for file in *.prt
    do 
        [ -f ".info.$file" ] || wc -c < "$file" >> ".info.$file"
    done
   )
done

答案 1 :(得分:0)

您必须在$()中包含命令替换:

DP_DATE=$(cat /tmp/dp_date.txt)

等号后面的空格将导致一个空变量并尝试执行第二个参数:

FOLDER="/transfer/report_archive/preprod/$DP_DATE/"