我正在尝试为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
我不确定这是否可行!
任何帮助将不胜感激
答案 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/"