将Bash Shell脚本输出保存到带有字符串

时间:2015-08-30 21:55:49

标签: linux bash

我有一个可执行文件,它接收一个文件并输出一行。 我在目录上运行循环:

for file in $DIRECTORY/*.png
do    
    ./eval $file >> out.txt
done

可执行文件的输出不包含文件名。 我想在每个输出中附加文件名。

EDIT1

也许,我无法正确解释 我想要文件的名称和程序的输出,它正在处理相同的文件,现在我正在做以下

for file in $DIRECTORY/*.png
do    
     echo -n $file >> out.txt
     or
     printf "%s" "$file" >> out.txt

    ./eval $file >> out.txt
done

两个新行都插入

2 个答案:

答案 0 :(得分:0)

如果我理解你的问题,你想要的是:

  • 获取文件名称
  • ...以及处理文件的输出或程序(在您的情况下为eval),
  • ......在同一条线上。最后一部分是你的问题。

然后我建议编写一行文本(使用echo),包括:

  • 文件的名称,这是$ file部分,
  • ...后跟分隔符,您可能不需要它,但它可能有助于进一步处理结果。我使用":"。如果这对你不感兴趣,你可以跳过这部分,
  • ...后面是处理文件的程序的输出:这是$(...)构造

    echo $ file":" $(./ eval $ file)>> out.txt

...最后将这一行文字附加到一个文件中,你就得到了那个部分。

答案 1 :(得分:-1)

请像这样使用

echo -n `echo ${file}|tr -d '\n'`  >> out.txt

OR

newname=`echo ${file}|tr -d '\n'`

echo -n $newname >> out.txt