Linux の場合
-d
を使用するだけです (または --date
) 日付を計算するには:
date -d '+1 hour' '+%F %T'
# ^^^^^^^^^^^^
例:
$ date '+%F %T'
2013-04-22 10:57:24
$ date -d '+1 hour' '+%F %T'
2013-04-22 11:57:24
# ^
Mac OS の場合
警告、上記は Linux でのみ機能し、Mac OS では機能しません。
Mac OS では、同等のコマンドは
date -v+1H
Linux と macOS を 1 つのコマンドで
Linux サーバーと macOS ワークステーションの両方で動作するスクリプトを作成する必要がある場合は、最初の date
のエラーを黙らせることができます。 呼び出して「OR」します (||
) 他と。どちらが先でも構いません。
date -u -d "+${max_age}Seconds" +"%Y-%m-%dT%H:%M:%SZ" 2>/dev/null || \
date -u -v "+${max_age}S" +"%Y-%m-%dT%H:%M:%SZ"
たとえば、この bash 関数はファイルを AWS S3 にアップロードし、Expires:
を設定します。 および Cache-Control:
s3_upload_cache_control(){
local max_age_seconds="${1}" ;shift # required
local bucket_path="${1}" ;shift # required
local filename="${1}" ;shift # required
local remote_filename="/${1:-${filename}}" # optional
local fmt="+%Y-%m-%dT%H:%M:%SZ"
aws s3 cp \
"${filename}" \
"s3://${bucket_path}${remote_filename}" \
--expires "$( \
date -u -d "+${max_age_seconds}Seconds" $fmt 2>/dev/null || \
date -u -v "+${max_age_seconds}S" $fmt )" \
--cache-control max-age=$max_age,public \
--acl public-read
}
シェル スクリプトで時間を追加する必要がある場合は、以下のコマンドと日付形式を使用します (DATE 文字列の前に TIME を入力)
date -d"11:15:10 2017-02-05 +2 hours" +"%Y-%m-%d %H:%M:%S"
これは 2017-02-05 13:15:10
を出力します
これは、UTC なしでは正しい日付になりません。動作しません