コマンドを単独で実行すると、うまく機能しているようです。例として:
date --date='TZ="PST" Sun Jan 01 05:00:10 2017'
2016年12月31日(土)21:00:10 PST
ただし、日付/時刻のリストを含む入力ファイルを使用しようとしていますが、すべての引用符に問題があり、機能しないようです。私の入力ファイル(dates.inputという名前の例は次のようになります:
$ cat dates.input
Sun Jan 01 06:49:33 2017
Sun Jan 01 05:44:17 2017
Sun Jan 01 05:43:23 2017
Sun Jan 01 05:39:13 2017
Sun Jan 01 05:00:10 2017
私が問題を抱えているコマンドは次のとおりです。
while read i; do "date --date='TZ="PST" ${i}'"; done < dates.input
与える
bash: date --date='TZ=PST Sun Jan 01 06:49:33 2017': command not found...
bash: date --date='TZ=PST Sun Jan 01 05:44:17 2017': command not found...
bash: date --date='TZ=PST Sun Jan 01 05:43:23 2017': command not found...
bash: date --date='TZ=PST Sun Jan 01 05:39:13 2017': command not found...
bash: date --date='TZ=PST Sun Jan 01 05:00:10 2017': command not found...
誰もこれを機能させる方法について何か提案がありますか?
ありがとう
例として、i
のこの値を選択してみましょう。
$ i='Sun Jan 01 06:49:33 2017'
それでは、ループ内でコマンドを実行しましょう。
$ "date --date='TZ="PST" ${i}'"
bash: date --date='TZ=PST Sun Jan 01 06:49:33 2017': command not found
ご覧のとおり、コマンドとその引数を引用符で囲むと、シェルが混乱します。代わりに試してください:
$ date --date="TZ=\"PST\" ${i}"
Sat Dec 31 22:49:33 PST 2016
上記は成功します。
このコマンドをループ内に配置すると、ループが機能するようになります。
$ while read i; do date --date="TZ=\"PST\" ${i}"; done < dates.input
Sat Dec 31 22:49:33 PST 2016
Sat Dec 31 21:44:17 PST 2016
Sat Dec 31 21:43:23 PST 2016
Sat Dec 31 21:39:13 PST 2016
Sat Dec 31 21:00:10 PST 2016