![使用 shell 将字符串转换为时间](https://linux22.com/image/1012890/%E4%BD%BF%E7%94%A8%20shell%20%E5%B0%86%E5%AD%97%E7%AC%A6%E4%B8%B2%E8%BD%AC%E6%8D%A2%E4%B8%BA%E6%97%B6%E9%97%B4.png)
我有一个 shell 脚本,它将从数据库中提取时间 (h:m:s) 并将该时间与当前时间进行比较,以根据比较结果采取操作。
我使用此命令获取当前时间
currenttime=$(date +%H%M%S);
我从数据库收到的时间是 peak_time,格式为 H:M:s,所以我使用这段代码从那个时间删除了 :
peak_time=`$peak_time' | sed s/://g `
现在我需要使用此命令将最后的结果转换为时间
peak_time=$(date -d "$peak_time" +%H%M%S);
但我收到这个错误
日期:无效日期‘190000’
所以请告诉我如何解决这个问题
答案1
你的命令不正确。
首先,您尝试在此处“执行”变量赋值:
peak_time=`$peak_time' | sed s/://g `
要正确运行此命令你应该写入:
peak_time=$(echo $peak_time | sed 's/://g')
但是,就像有些人在评论中所说的那样,除了最后一步之外,你不需要更多步骤:
peak_time=$(date -d "$peak_time" +%H%M%S)
答案2
我不完全确定您要做什么,但是从流程中删除此步骤:peak_time=$peak_time' | sed s/://g
将使下一步起作用,因为您已经有效地将时间字符串从 19:00:00 转换为 190000 之类的值date
。