Bash脚本 - 根据模板转换时间

时间:2017-04-20 23:30:28

标签: linux bash shell date

我的脚本正在从docker容器捕获时间,下一步我想将其转换为某种格式,这样我就可以用当前系统时间替换docker time并获得差异。

所以现在我想要至少转换它,这样我的脚本就会理解我正在与时间合作。

#!/bin/bash

name=$1
matching=$(docker ps -a --filter="name=$name" -q | xargs)
current_time=$(date -u +"%Y-%m-%dT%T")
echo Current time: ${current_time}

for i in $matching
do
    time=sudo docker inspect $i | grep -w "StartedAt" | awk '{gsub(/"/, "", $2); print $2 }' | head -n 1 | cut -c -19
    echo ${time}    
    echo $(date -d +"%Y-%m-%dT%H:%M:%S" --date="$time")
done

我得到的输出是

Thu Apr 20 00:00:00 PDT 2017
2017-04-19T00:57:15

但我希望得到:

Wed Apr 19 00:57:15 PDT 2017
2017-04-19T00:57:15

1 个答案:

答案 0 :(得分:1)

docker inspect命令输出未分配给time变量。尝试命令替换:

#!/bin/bash

name=$1
matching=$(docker ps -a --filter="name=$name" -q | xargs)
current_time=$(date -u +"%Y-%m-%dT%T")
echo Current time: ${current_time}

for i in $matching
do
    time=$(sudo docker inspect $i | grep -w "StartedAt" | awk '{gsub(/"/, "", $2); print $2 }' | head -n 1 | cut -c -19)
    echo ${time}    
    echo $(date -d +"%Y-%m-%dT%H:%M:%S" --date="$time")
done