2017-04-20 4 views
1

私のスクリプトはドッカーのコンテナから時間をキャプチャしています。次のステップは、現在のシステム時間とドッカー時間を入れ替えることができます。Bashスクリプト - テンプレートに従って時刻を変換する

今のところ、少なくとも私はそれを変換したいので、私のスクリプトは私が時間を使って作業していることを理解するでしょう。

#!/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 
+0

システムクロックはハードウェアです!仮想ホストの場合、システムクロックは* Hardware Node *クロック(物理ホスト)に基づいています。私はあなたの目標が間違っていると思う...見てください:http://stackoverflow.com/a/24568137/1765658 –

答えて

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 
+0

ありがとう、それは私の問題を解決した! – Dimu4

関連する問題