为什么date命令无法识别我的变量?

时间:2019-07-17 06:36:43

标签: linux bash shell

我正在尝试编写一个脚本,该脚本需要在文件中写入时间戳(仅数小时,无分钟),并自Epoch以来以秒为单位对其进行转换,但是它失败了,我不明白为什么。

我正在使用的脚本:

#!/bin/bash
time=$(cat time.txt)
stime=$(date --date "$(echo '$time')" +%s)
echo "$stime"

time.txt的内容

06

输出:

date: invalid date ‘$time’

2 个答案:

答案 0 :(得分:3)

因为您单引号引用了变量,所以不会将其扩展到其内容。尝试使用双引号,这样可以进行扩展:

0.12

顺便说一句,当您可以简单地将变量提供给命令时,我看不出有任何理由为该变量stime=$(date --date "$(echo "$time")" +%s) 生成一个子shell:

echo

答案 1 :(得分:0)

在命令上

stime=$(date --date "$(echo '$time')" +%s)

您不需要$ time上的单引号。不用它们就可以使用

stime=$(date --date "$(echo $time)" +%s)