【问题标题】:Need functionality from bash time command to behave需要 bash time 命令的功能才能表现
【发布时间】:2026-01-11 07:05:01
【问题描述】:

我现在拥有的:

#!/bin/bash

/usr/bin/time -f "%E" rows=$(mysql -uuser -pXXXXXXXXXX --skip-column-names -e "use db; update users set create_time=now(); select row_count();") 
echo $rows

但是运行时出现这个错误:

/usr/bin/time: cannot run rows=12: No such file or directory
0:00.00 real

我需要使用这个真正的 /usr/bin/time 命令,而不是可用的独立时间命令。有什么方法可以使用这个命令来获得我想要的功能吗?

【问题讨论】:

    标签: linux bash time bin


    【解决方案1】:

    变量赋值是一个 shell 结构,你不能将它作为命令“运行”,如果可以的话,它不会对你当前的 shell 会话产生任何影响。但幸运的是,您需要做的就是重新组织命令:

    rows=$(/usr/bin/time -f "%E" mysql -uuser -pXXXXXXXXXX --skip-column-names -e "use db; update users set create_time=now(); select row_count();")
    

    由于time默认向stderr显示计时信息,所以会进入控制台,不会被$()构造捕获。 mysql 的输出将照常传递和捕获。

    【讨论】:

    • 我可以在 nohup 时捕获时间结果,但它不会让我捕获到文件中。我需要能够将数据存储在 nohup.out 以外的外部文件中。
    • @user3299633 将-o 选项用于time