Shell 在文件中保存输出c程序时出现问题

Shell 在文件中保存输出c程序时出现问题,shell,Shell,我试图制作一个脚本,将c程序的输出保存到一个文件中。 脚本如下: #!/bin/sh make clean all ./bin/output -a edit -e 0.05 -i dataset.fseq --k 3 --check > file.txt 脚本返回空文件,但不返回执行结果 以下是脚本执行的示例: ~/candidat.v1$ sh test3.sh rm -rf bin build make --directory=alignment all gcc -Wall -g -

我试图制作一个脚本,将c程序的输出保存到一个文件中。 脚本如下:

#!/bin/sh
make clean all
./bin/output -a edit -e 0.05 -i dataset.fseq --k 3 --check > file.txt
脚本返回空文件,但不返回执行结果

以下是脚本执行的示例:

~/candidat.v1$ sh test3.sh
rm -rf bin build
make --directory=alignment all
gcc -Wall -g -O3 -I.. -c edit_bpm_distance.c -o ../build/edit_bpm_distance.o
gcc -Wall -g -O3 -I.. -c edit_column.c -o ../build/edit_column.o
  ../bin/filters_benchmark -lm -lrt
[Benchmark]
=> Total.sequences        1000000
=> Time.Benchmark        14.90 s  (    1   call,  14.90  s/call {min14.90s,Max14.90s})
  => Time.Filter        523.99 ms (  3.52 %) (    1 Mcalls,    523 ns/call {min145ns,Max36.76us})
=> Check
  => TP.Hit       766954 (76.695)
    => TP.OK.IN   226477 (22.648)
    => TN.OK.OUT  540477 (54.048)
  => FP.Noise     233046 (23.305)
  => FN.Miss      0 (0.000)

file.txt应该返回一个包含执行结果的文件,但它返回一个空文件。

似乎此程序将输出发送到STDERR,而不是STDOUT。因此,您可以重写脚本以在同一文件中写入STDERR:

#!/bin/sh
make clean all
./bin/output -a edit -e 0.05 -i dataset.fseq --k 3 --check > file.txt 2>&1

似乎这个程序将输出发送到STDERR,而不是STDOUT。因此,您可以重写脚本以在同一文件中写入STDERR:

#!/bin/sh
make clean all
./bin/output -a edit -e 0.05 -i dataset.fseq --k 3 --check > file.txt 2>&1

您如何知道有任何输出要保存?您能否在问题中添加一个运行脚本的示例以及控制台上显示的内容?以及直接运行程序的方法?最后,你能澄清一下“脚本返回…”中“返回”的含义吗?@ScottMcPeak当我直接运行程序时,显示如下输出:=>Total.sequences 1000000=>Time.Benchmark 14.96 s(1个调用,14.96 s/call{min14.96s,Max14.96s}=>Time.Filter 525.75 ms(3.52%)(1 Mcalls,525ns/call{min149ns,Max25.81us})=>Check=>TP.Hit 766954(76.695)=>TP.OK.IN 226477(22.648)=>TN.OK.OUT 540477(54.048)=>FP.Noise 233046(23.305)=>FN.Miss 0(0.000)@ScottMcPeak当我说“脚本返回”时我的意思是,当脚本被执行时,它会生成一个输出文件。这个文件是空的。你怎么知道有任何输出要保存?你能在你的问题中添加一个运行脚本的例子,以及控制台上显示的内容吗?以及直接运行程序的例子吗?最后,你能澄清“脚本返回…”中的“返回”是什么意思吗当我直接运行该程序时,@ScottMcPeak会出现如下输出:=>Total.sequences 1000000=>Time.benchmark14.96s(1个调用,14.96s/call{min14.96s,Max14.96s})=>Time.Filter 525.75ms(3.52%)(1个Mcalls,525ns/call{min149ns,Max25.81us}=>Check=>TP.Hit 766954(76.695)=>TP.OK.IN 226477(22.648)=>TN.OK.OUT 540477(54.048)=>FP.Noise 233046(23.305)=>FN.Miss 0(0.000)@ScottMcPeak当我说“脚本返回”时,我的意思是当脚本执行时,它会生成一个输出文件。这个文件是空的