Unixで日付変換のエコーを文字列変数として保存する際に問題が発生しました。

Unixで日付変換のエコーを文字列変数として保存する際に問題が発生しました。

申し訳ありません。この質問は、以前に質問した内容からのものです。ローカル日時を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"

関連情報