在unix中将日期转换的回显存储到字符串变量中的问题

在unix中将日期转换的回显存储到字符串变量中的问题

抱歉,这个问题来自之前提出的问题:如何将本地日期时间转换为 UTC 日期时间?托比(Toby)非常出色地帮助我处理了一些转换字符串--> BST --> GMT,但我现在面临着另一个我认为是虚拟的问题。

我的 .sh 很简单:

# variables needed for testing
DateNew="20150903"
TimeNew="200001"

# concatenating date and time 
DateTimeNew_Suffix=${DateNew}${TimeNew}

# storing the conversion provided by Toby Speight into a variable
newPrefix=`echo "${DateTimeNew_Suffix}"| sed -re 's/^([0-9]{8})([0-9]{2})([0-9]{2})([0-9]{2})$/\1\\ \2:\3:\4/'| xargs date +@%s -d | xargs date -u +%Y%m%d%H%M%S -d`

#printing that value
echo $newPrefix

预期是:“20150903190001”这应该是作为字符串分配给 $newPrefix 的值,但是 Unix 本身抛出了这个异常:

日期:额外的操作数20:00:01' Try日期 --help' 了解更多信息。

date: 选项需要一个参数 -- 'd' 尝试使用 `date --help' 了解更多

信息。

单独运行该命令我得到预期的输出:

echo "20150903200001"    | sed -re 's/^([0-9]{8})([0-9]{2})([0-9]{2})([0-9]{2})$/\1\\ \2:\3:\4/'    | xargs date +@%s -d    | xargs date -u +%Y%m%d%H%M%S -d

20150903190001

如何将此 echo 作为字符串存储到 newPrefix 变量中?看起来日期到变量的转换失败,但回显却没有。

有什么帮助吗?

答案1

找到解决方案:)

DateNew='20150903'
TimeNew='200001'
DateTimeNew_Suffix=${DateNew}${TimeNew}
newPrefix=$(sed -n 1p $filename | sed -re 's/^([0-9]{8})([0-9]{2})([0-9]{2})([0-9]{2})$/\1\\ \2:\3:\4/'| xargs date +@%s -d| xargs date -u +%Y%m%d%H%M%S -d)
echo $newPrefix
echo "$newPrefix"

相关内容