申し訳ありません。この質問は、以前に質問した内容からのものです。ローカル日時を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を参照してください。日付:オプションには1つの引数が必要です。 -- '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
このエコーを文字列として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"