同时发出的命令

时间:2016-02-18 12:51:05

标签: bash date

我有一个脚本:

#!/bin/bash

date +%T &
Hours=`date +"%H"` &
Minutes=`date +"%M"` & 
Seconds=`date +"%S"`

echo "$Hours:$Minutes:$Seconds"

目标是echo date两次,然后取出小时,分钟,秒并计算这两个命令之间经过的秒数。所以我的解决方案是将小时,分钟,秒写入变量,然后使用这些变量。

问题:echo只回显秒,这意味着我对&的解释是错误的。

  1. 如何修复&问题?我需要这些命令同时运行,所以我可以检查。

  2. date +%s显然不会对某些输入工作,例如:

  3. Wed Mar 4 10:34:59 2015 Wed Mar 4 10:35:08 2015

    会给出00:00:01而不是00:00:09

    的结果

    Wed Mar 4 10:34:59 2015 Wed Mar 4 17:43:08 2015

    将提供12:13:14而不是07:08:09的结果。这是真的吗?或者我可以使用date +%s然后减少这两个输出吗?

2 个答案:

答案 0 :(得分:2)

您无需同时运行命令。只运行一个命令:

ID      Mac

1     77777
2     xxxxx

但它可以更简单:只需使用<?php include 'conn.php'; // Check connection if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } $query = mysqli_query($conn, "insert into result_tbale(mac) select table2.mac from table2 inner join table1 on table1.email = table1.email"); ?> 格式来获取自纪元以来的秒数。您将获得两个可以安全减去的数字。

read hours minutes seconds < <( date '+%H %M %S' )

最简单的方法是使用shell变量$ SECONDS。

  

每次引用此参数时,都会返回自返回shell调用以来的秒数。如果为SECONDS分配了值,则返回值                 后续引用是自赋值以来的秒数                 分配的价值。如果没有设置SECONDS,即使它失去了特殊属性                 它随后被重置。

答案 1 :(得分:-1)

主要问题是,在这种情况下,命令date将在树时间执行以获取值..

所以你不需要多次执行逗号日期

#!/bin/bash

#date +%T &
function myTime(){

now=`date +"%H:%M:%S" &` 
}

myTime
s1=`echo $now | cut -d":" -f2`
myTime
s2=`echo $now | cut -d":" -f2`

echo "s1[$s1] - s2[$s2]"

然后,您可以应用规则来验证已过去的时间

此致

克劳迪奥