需要 bash time 命令的功能才能运行
Need functionality from bash time command to behave
我现在拥有的:
#!/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 命令,而不是可用的独立时间命令。有什么方法可以使用此命令来获得我想要的功能吗?
变量赋值是一个 shell 构造,你不能 "run" 它作为一个命令,如果你可以,它不会对你当前的 shell 有任何影响session。但幸运的是,您需要做的就是重新组织命令:
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
的输出将照常传递和捕获。
我现在拥有的:
#!/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 命令,而不是可用的独立时间命令。有什么方法可以使用此命令来获得我想要的功能吗?
变量赋值是一个 shell 构造,你不能 "run" 它作为一个命令,如果你可以,它不会对你当前的 shell 有任何影响session。但幸运的是,您需要做的就是重新组织命令:
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
的输出将照常传递和捕获。