与えられた日付から次の土曜日の日付を取得します。

与えられた日付から次の土曜日の日付を取得します。

特定の日以降の次の土曜日の日付が必要です。たとえば、$date1="30-AUG-2015"05-SEP-2015という結果が必要です。

私は成功せず、次のコマンドをすべて試しました。

samba@samba:~$ date1="30-AUG-2015"
samba@samba:~$ date2=$(date --date='"$date1" +next Saturday')
date: invalid date ‘"$date1" +next Saturday’

samba@samba:~$ date1="30-AUG-2015"
samba@samba:~$ date2=$(date --date1='next Saturday')
date: unrecognized option '--date1=next Saturday'
Try 'date --help' for more information.

samba@samba:~$ date1="30-AUG-2015"
samba@samba:~$ date -d "$date1 next saturday"
Sun Aug 30 00:00:00 IST 2015
samba@samba:~$ $date1 -d "next saturday"
30-AUG-2015: command not found

ベストアンサー1

私は強くお勧めします日付ツールこのようなことのために。

Fedora Linux 21+またはCentOS / RHEL(EPELを含む):

dnf install dateutils 

yum以前のバージョンのRHELではDNFの代わりに)

Debianベースのシステムでは、パッケージを呼び出すこともできますが、関連しないパッケージと同じ名前のコマンドといくつかのパッケージを区別するために、コマンドの前にdateutilsプレフィックスが付けられます(したがって、以下のコマンドで置き換えられます)。dateutils.daterounddateutils.dround

次に、次のようにします。

dateround today sunday

「今日」を使用するか、実際の日付に置き換えることができます。

$ dateround 2015-08-30 saturday
2015-09-05

2015 年 8 月 30 日など、特定の形式で日付を入力する必要がある場合は、次のように、または-iオプションを使用できます。--input-format

$ dateround -i '%d-%b-%Y' 30-AUG-2015 saturday
2015-09-05

「dateround」という名前からすぐにはわかりませんが、このコマンドは丸め- つまり、月曜日は前の日曜日にロールバックされません。一致するものがある場合、デフォルトでは現在の日付も返されます。たとえば、今日が日曜日の場合、dateround today sunday今日の日付が提供されます。常に将来の日付になるようにこの--nextフラグを追加してください。

おすすめ記事