Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 使用字符串将bashshell脚本输出保存到文件_Linux_Bash - Fatal编程技术网

Linux 使用字符串将bashshell脚本输出保存到文件

Linux 使用字符串将bashshell脚本输出保存到文件,linux,bash,Linux,Bash,我有一个可执行文件,它接收一个文件并输出一行。 我正在目录上运行循环: for file in $DIRECTORY/*.png do ./eval $file >> out.txt done 可执行文件的输出不包含文件名。 我想在每个输出中附加文件名 EDIT1 也许,我不能正确地解释它 我想要文件名和程序的输出,它正在处理同一个文件,现在我正在做以下工作 for file in $DIRECTORY/*.png do echo -n $file

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

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
对于插入的两个新行,请像这样使用

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


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

  • 获取文件名
  • …以及处理文件的输出或程序(在您的情况下为eval)
  • …在同一条线上。这最后一部分是你的问题
然后我建议编写一行文本(使用echo),包括:

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

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


…最后将这一行文本添加到文件中,这一部分就正确了。

echo-n$file>>out.txt
?请参阅以澄清您的问题。@Joachim,它可以工作,但-n不会停止插入新行,有什么想法吗?如果shell无法识别
-n
,请尝试:
printf“%s”“$file”>>out.txt
这是您自己的程序吗?在那个程序中,你会打印前导的换行符吗?你能编辑你的答案来解释它的作用以及它是如何解决原始问题的吗?你能把你正在尝试的代码粘贴在这里吗。如果可能的话,请再解释一下这个问题
newname=`echo ${file}|tr -d '\n'`

echo -n $newname >> out.txt