我有几种不同的算法,我需要对其进行原型设计。
所以我制作了原型程序和脚本。调用的脚本time.sh
看起来像这样
echo "Timing algorithm1:"
time algo1 >dev/null
echo "Timing algorithm2:"
time algo2 >dev/null
echo "Timing algorithm3:"
time algo3 >dev/null
...
现在为了简单起见,替换ls
为algo1
...(我不想为每个算法发布代码,强迫人们编译它...)
echo " Timing ls"
time ls 2>&1 > /dev/null
叫它time_ls.sh
那我就做
sh time_ls.sh > ls_sh.meas
无论我做什么,无论我在脚本或命令行中放置什么重定向,我都会得到两个结果之一。我要么在终端中得到 echo 的输出,即“Timing ls”,要么得到ls_sh.meas
相反的定时数据。
这就像 stdout 和 stderr 不想聚集在一起并创建一个婴儿数据文件。
任何人都可以解释这种奇怪的行为,并建议解决方法吗?
PS:这是在 bash 中完成的。