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)
- …在同一条线上。这最后一部分是你的问题
- 文件名,这是$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