質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
シェルスクリプト

シェルスクリプトは、UNIX系のOSもしくはコマンドラインインタプリタ向けに記述されたスクリプト。bash/zshといったシェルによって実行されるため、このように呼ばれています。バッチ処理などに使用されており、テキストファイルに書かれた命令を順に実行します。

Q&A

解決済

2回答

1997閲覧

シェルスクリプトで一年のカレンダーを表示したい

KenTanNie

総合スコア1

シェルスクリプト

シェルスクリプトは、UNIX系のOSもしくはコマンドラインインタプリタ向けに記述されたスクリプト。bash/zshといったシェルによって実行されるため、このように呼ばれています。バッチ処理などに使用されており、テキストファイルに書かれた命令を順に実行します。

0グッド

0クリップ

投稿2023/07/02 13:35

実現したいこと

シェルスクリプト内で下記のような1年のカレンダーを出力したいです。
1月
1日、2日、3日、4日…(省略)31日
2月
1日、2日、3日、4日…(省略)28日
(以下同様)

試したこと

二重ループを作り、内側のfor文にif文で条件指定をすることで
2月や4月などは28日終わり、30日終わりになるように試したのですが効かず。
キーワードで検索してもピンとこずだったので出力の方法をご教授願いたい次第です。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

winterboum

2023/07/02 14:02

「試したのですが効かず。」というのはどの様にしたのか、を載せましょう
guest

回答2

0

ベストアンサー

自分で月の日数を考えない方法。

Bash

1#!/bin/bash 2YEAR=$(date +%Y) 3 4for MONTH in {1..12} 5do 6 echo "$MONTH"7 echo $(LC_ALL=ja_JP.utf8 cal "$MONTH" "$YEAR") | 8 sed 's/.*土 //;s/ /日、/g;s/$/日/' 9 #または sed 's/.*土 //;s/[0-9][0-9]*/&日/g;s/ /、/g' 10done

投稿2023/07/02 18:41

編集2023/07/02 18:46
otn

総合スコア86295

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

Bash依存です。

bash

1#!/bin/bash 2 3# current year 4declare -i year=$(date +%Y) 5# days in each month 6declare -a mdays=(0 31 28 31 30 31 30 31 31 30 31 30 31) 7# leap year 8: $(((!(year%4) && year%100 || !(year%400)) && mdays[2]++)) 9 10for m in {1..12} 11do 12 echo $m13 eval echo -n {1..$((${mdays[$m]}-1))}日、 14 echo ${mdays[$m]}15done

投稿2023/07/02 15:20

melian

総合スコア21118

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問