抱歉,这个问题来自之前提出的问题:如何将本地日期时间转换为 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"