我有一个数组,该数组存储在bash变量中,该变量是日期的json数组(当前由单独的脚本生成)。看起来如下
["2019-09-19 03:13:29", "2019-09-19 20:20:18", "2019-09-19 18:19:50", "2019-09-19 06:07:17", "2019-09-19 11:53:25"]
我想遍历这些日期并保留日期中的空白,以便可以在gdate
命令中使用它们。我当前正在使用jq
,但是这会将日期部分与时间部分分开。即
dates=$(python date_producing_script.py | jq -c -r '.[]')
for date in ${dates[@]}; do
echo $date
#end goal is to do something here w/ gdate ex gdate -d $date ...
done
但是这给类似的东西
2019-09-19
03:13:29
2019-09-19
20:20:18
2019-09-19
18:19:50
2019-09-19
06:07:17
2019-09-19
11:53:25
我正在寻找类似以下内容的地方
2019-09-19 03:13:29
2019-09-19 20:20:18
2019-09-19 18:19:50
2019-09-19 06:07:17
2019-09-19 11:53:25
(给我一个令人困惑的事情是,如果我只是在终端中执行python date_producing_script.py | jq -c -r '.[]'
命令,它看起来就是我想要的样子)
但是理想情况下,我想要类似的东西。无论如何,可以从shell脚本中的输入中获得此结果
您的jq很好;问题出在循环遍历bash数组的方式上,可以从以下bash打字稿中看到:
$ ary=("a b" "c d")
$ for x in ${ary[@]} ; do echo "$x" ; done
a
b
c
d
$ for x in "${ary[@]}" ; do echo "$x" ; done
a b
c d
$
"${dates[@]}"
这里是一种解决方案:
#!/bin/bash
#
IFS=','
dates='["2019-09-19 03:13:29", "2019-09-19 20:20:18", "2019-09-19 18:19:50", "2019-09-19 06:07:17", "2019-09-19 11:53:25"]'
for date in ${dates[@]}
do
# Cleanup $date
thedate=$(echo $date | tr -d '\[\]"' | sed -e 's/^[[:space:]]*//')
echo "-->$thedate<--"
done
$dates
现在在,上分隔]]$thedate
是$date
,其中删除了[
,]
,"
。 sed
将删除前缀空格。-->
和<--
以表示$thedate
不包含任何空格。[[0]也很可能也有解决方案。