Bash 编写运行命令并计时的脚本

Bash 编写运行命令并计时的脚本,bash,time,Bash,Time,我正在尝试编写一个脚本,它将运行给定的脚本并计时,然后以.csv格式将其输出到文件中 到目前为止,我并没有查看以前的文章,而是发现sh-c“$index\u of_command\u arg”可以用来调用该命令 我也熟悉时间,我知道人们使用时间进行格式化,但是我需要格式化总秒数(例如,1.34516),但是格式化实时时间的唯一选项是%E,它返回[hours:]minutes:seconds。有没有办法按照我需要的方式来编排 我的脚本的总体思路是: # ---- # some input vali

我正在尝试编写一个脚本,它将运行给定的脚本并计时,然后以
.csv
格式将其输出到文件中

到目前为止,我并没有查看以前的文章,而是发现
sh-c“$index\u of_command\u arg”
可以用来调用该命令

我也熟悉时间,我知道人们使用时间进行格式化,但是我需要格式化总秒数(例如,
1.34516
),但是格式化实时时间的唯一选项是
%E
,它返回
[hours:]minutes:seconds
。有没有办法按照我需要的方式来编排

我的脚本的总体思路是:

# ----
# some input validation
# ----
rule=$1
command=$2
execution_time=/usr/bin/time -f "%total_seconds" sh -c "$command" #is this line possible?
echo "$rule,$execution_time" > output_file.csv
这个可以按我想要的方式格式化吗?还有,后面有注释的行,
这会像我写的那样有效吗?语法正确吗?

替换为:

 execution_time=/usr/bin/time -f "%total_seconds" sh -c "$command" `  
与:

execution_time=`(time sh -c "$command > /dev/null 2>&1") 2>&1 | grep real |sed "s/.*m//;s/s.*//;"`    
或与:

execution_time=`(time sh -c "$command > /dev/null 2>&1") 2>&1 | grep real | cut -c 8-12`    
  • 为什么
    /dev/null
    -您不想看到
    $command
    输出2>&1(STDERR>STDOUT)
  • 为什么对
    时间
    命令使用2>&1(原因与上一个项目符号相同)
假设我使用正常时间,得到的是
real 0m2.003…
输出,如何从中取出
2.003

您提到的正常时间是内置的
time
。从:

TIMEFORMAT
变量可以设置为格式字符串 指定应如何显示定时信息的。 …
%[p][l]R
已用时间(以秒为单位)

所以,你可以使用

execution_time=`TIMEFORMAT=%R bash -c "time $command" 2>&1 >/dev/tty`

%e(不在tcsh(1)中)实时运行(以秒为单位)。
执行时间线如何?它的语法正确吗?\try
execution\u time=$(/usr/bin…)。谢谢,
%total_seconds
只是一个存根,我正在寻找替代它的东西。所以基本上
/usr/bin/time-f“%e”sh-c“$command”
?用%ehy dude替换%total_seconds,显然我的环境中没有
/usr/bin/time
,所以我不能使用
-f“%e”
。假设我使用正常时间,得到
real 0m2.003…
输出,我如何从中提取
2.003