• ベストアンサー

bashで5、10日かどうかを判定したい

bashで5、10日かどうかを判定したい とりあえず、何日かを確保したとして、、、 declare DATE_DD=`date +%d` ここから、この${DATE_DD}を5で割って余りが0なら"ゴト日"ですが、余りの求め方はおろか、割算の仕方さえ分かりませんでした。 bashって演算できるのでしょうか? ネット検索してもよくわかりませんでした。

  • ngwave
  • お礼率65% (240/366)

質問者が選んだベストアンサー

  • ベストアンサー
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.5

「演算子としてmod的なモノ」なら, ちゃんと #4 にリストアップされてますが....

ngwave
質問者

お礼

あ、 % ですね 失礼しました。 有り難うございます。

その他の回答 (4)

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.4

http://www.linux.or.jp/JM/html/GNU_bash/man1/bash.1.html > 算術式展開 > 算術式展開を使うと、算術式を評価して、その結果に置換できます。算術式展開のフォーマットを次に示します: > $((expression)) >算術式評価 >シェルにおいては、特定の状況下で算術式を評価させることができます (略) > * / % > 乗算、除算、剰余 以上、 man bash に書いてあることです。 上記サイトはgoolgeで「bash」でトップにきました。 manも検索もわからないなら、書店で解説書買って熟読してください。

ngwave
質問者

補足

ありがとうございます。 # echo $((-7*5)) -35 # echo $((7*1.5)) bash: 7*1.5: syntax error: invalid arithmetic operator (error token is ".5") # echo $((10/3)) 3 # echo $((7/4)) 1 aa=8 bb=3 cc=$(($aa-$(($(($aa/$bb))*$bb)))) echo $cc マイナスは使えて、少数は使えない。 少数は四捨五入でなく切り捨て。 割算の余りを求めるのは大変そうですね。 8÷3の余りを求めるなら下記のような感じで書けなくはなさそうですが、演算子としてはmod的なモノは無いのでしょうか。 # aa=8 # bb=3 # cc=$(($aa-$(($(($aa/$bb))*$bb)))) # echo $cc 2 >書店で解説書買って熟読してください。 近所に売っていれば買っても良いのですが、bashの解説書を取り扱ってる書店は劇レアです。 通販以外ではまず無理です。

  • SaKaKashi
  • ベストアンサー率24% (755/3136)
回答No.3

bashで演算できるかどうかと言うことなら、できます。 man bashで説明を読んでください。

ngwave
質問者

補足

どうしても教えたくないならレスしてくれなくて結構です

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

普通は「ネット検索」の前に man では?

ngwave
質問者

補足

manはコマンドの使い方が分からないときは役に立ちますが、 やりたい事はこうだけど、 どのコマンドを使ったら良いのか? そもそもそんなコマンドあるのか? って時には殆ど無力です。

  • SaKaKashi
  • ベストアンサー率24% (755/3136)
回答No.1

5日か10日かって、5、10、15、20、25、30でしょ。別に演算しなくても6回比較すれば。

ngwave
質問者

補足

まあそうれはそうですけど、 演算はどうせやりたい事があるので、このタイミングで知っておきたいんです。 それが「bashでは無理」という答えだったとしてもです。

関連するQ&A

  • javaで時刻の判定

    String型のtimeに YYYY-MM-DD HH:MM:SS の形式である時刻が入っているとします. この時刻がYYYY年MM月DD日の20時00分00秒~23時59分59秒内であるかどうかを判定するにはどうしたらよいでしょうか? 文字列のままでは大小比較は困難な気がしますし、GregorianCalendar型もみてみたのですが、いまいち大小比較の仕方がわかりませんでした。 よろしくおねがいします

  • 祝日判定です。

    祝日判定 カレンダーですが、エラーが出てしまいます。どうかよろしくお願いいたします。ソースの一部です。 for (j=0; j<6; j++) { for (k=0; k<7; k++) { if (cal[i][j][k]==0) printf(" "); else if(hantei(yy,mm,dd,youbi) == 2){ printf("(%3d) ",cal[i][j][k]); flag = 1; // 日曜と祝日が重なったらflagをたてる } else if(hantei(yy,mm,dd,youbi) == 1 || flag == 1){ printf("(%3d) ",cal[i][j][k]); printf("\t"); flag = 0; } else if((i-1)%7 == 6){ // 土曜日 printf("%3d ",cal[i][j][k]); printf("\t"); } else{ printf("(%3d) ",cal[i][j][k]); //printf("%d"); //日付を出力 flag = 0; } if((i-1)%7 == 6) printf("\n"); //土曜のあとは改行 } int hantei(int yy,int mm,int dd,int youbi){ if((mm==3 && dd== (int)(20.8431 + 0.

  • UTF8でperlスクリプトを書くと年月日が表示しない

    UTF-8で下記スクリプトを書いて実行すると、 $yy年$mo月$dd日 にあたる部分が表示されず、($day)$hh:$mm:$ss の部分しか表示されません。 ------------------------------------ #!/usr/bin/perl use utf8; use Encode; &get_date(); print "Content-type: text/html\;charset=utf-8\n\n"; print encode('utf8',"$date"); exit; sub get_date { ($ss,$mm,$hh,$dd,$mo,$yy,$day)= localtime(time); $day = ("日","月","火","水","木","金","土")[$day]; $yy = $yy+1900; $mo++; if ( $mo < 10 ) { $mo = "0$mo"; } if ( $dd < 10 ) { $dd = "0$dd"; } if ( $hh < 10 ) { $hh = "0$hh"; } if ( $mm < 10 ) { $mm = "0$mm"; } if ( $ss < 10 ) { $ss = "0$ss"; } $date = "$yy年$mo月$dd日($day)$hh:$mm:$ss"; } ------------------------------ EUCコードでスクリプトを書いてencodeなど不要な部分を変更した場合は$yy年$mo月$dd日の部分も表示されます。 また、上記  $date = "$yy年$mo月$dd日($day)$hh:$mm:$ss"; の部分を下記のように変更すると表示されますが... -------------------------- $date = $yy; $date .="年"; $date .= $mo; $date .="月"; $date .= $dd; $date .="日"; $date .="($day)$hh:$mm:$ss"; -------------------------- なぜ一括してダブルクォートで囲むと表示されないのでしょうか? 今まではEUCでスクリプトを書いておりました。UTF8に翻弄されております... どうぞよろしくお願いいたします。

    • ベストアンサー
    • Perl
  • 日付取得、計算及び表示コードが動作しません。

    日付取得、計算及び表示コードが動作しません。 下記のコードのどこが間違っているのか、どなたかお分かりですか? このコードでは、今日の日付をサーバから取得し、それから10日後の日付を計算して表示したいです。 $currentdate = .getdate(); $yyyy = $currentdate["year"]; $mm = $currentdate["mon"]; $dd = $currentdate["mday"]; $int_day = 10; $duedate = .date("y/m/d", mktime(0, 0, 0, $mm, $dd+$int_day, $yyyy)); echo "$duedate" また、上記のコードが動作するようになったとして、表示される日付は「2008/06/10」のようになるかと思いますが、これを「2008年06月10日」のように表示させる方法をご存知でしょうか? >$duedate = .date("y/m/d", mktime(0, 0, 0, $mm, $dd+$int_day, $yyyy)); 上記コードを下記のように変更してもだめです。 >$duedate = .date("y年m月d日", mktime(0, 0, 0, $mm, $dd+$int_day, $yyyy)); よろしくお願いします。

    • ベストアンサー
    • PHP
  • 月曜日から始まる週間カレンダーの作り方

    いつもありがとうございます。 下記のようなコードを書いて1週間のカレンダーを作っていますが、 どうしても日曜日からの表示になります。 この表示を月曜日から始まり、日曜日で終わるカレンダーにならないものか考えるのですが、どうもうまくいきません。 よきアドバイスをお願いします。 <? //来週・前週の---日曜日----をgetした値 $get_sunday = htmlspecialchars($_GET["get_sunday"]); $entry_day = htmlspecialchars($_GET["entry_day"]); //変数の値の識別カレンダー表示 //get_sunday (来週・前週)の値がgetされていたら if($get_sunday!=""){ //getされた日曜日の日付 $mm = date("m",strtotime($get_sunday)); $dd = date("d",strtotime($get_sunday)); $yyyy = date("Y",strtotime($get_sunday)); //getされた日曜日の日付(日のみ) $sunday_num = $dd; //getされた日曜日の日付(年月日) $kyujin_day = date("Y-m-d",mktime(0,0,0,$mm,$dd,$yyyy)); } // ================================================= //変数の値の識別           カレンダー表示 //entry_day (指定した日)の値をgetされたら if($entry_day!=""){ $mm = date("m",strtotime($entry_day)); $dd = date("d",strtotime($entry_day)); $yyyy = date("Y",strtotime($entry_day)); //$week_numに今日の曜日ナンバーを代入(mktime(0,0,0,今日の月,今日の日,今日の年) //日0・月1・火2・水3・木4・金5・土6 $week_num = date("w", mktime(0,0,0,$mm,$dd,$yyyy)); //entry_dayの値 $kyujin_day = date("Y-m-d",mktime(0,0,0,$mm,$dd,$yyyy)); //日曜日の日付(日のみ) $sunday_num = $dd - $week_num; } // ================================================= //変数の値がない場合は本日の日付の取得 カレンダー表示 if($get_sunday=="" and $entry_day==""){ $mm = date("m",time()); $dd = date("d",time()); $yyyy = date("Y",time()); //$week_numに今日の曜日ナンバーを代入(mktime(0,0,0,今日の月,今日の日,今日の年) $week_num = date("w", mktime(0,0,0,$mm,$dd,$yyyy)); $kyujin_day = date("Y-m-d",mktime(0,0,0,$mm,$dd,$yyyy)); //日曜日の日付(日のみ) $sunday_num = $dd - $week_num; } //前週、次週に日曜日の日付を取得    カレンダー表示 $sunday_last = $sunday_num - 7; $sunday_next = $sunday_num + 7; ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <title>レンダー画面</title> </head> <body> <table> <tr> <td></td> <td bgcolor="#00FFFF">日</td> <td bgcolor="#00FFFF">月</td> <td bgcolor="#00FFFF">火</td> <td bgcolor="#00FFFF">水</td> <td bgcolor="#00FFFF">木</td> <td bgcolor="#00FFFF">金</td> <td bgcolor="#00FFFF">土</td> <td></td> </tr> <tr> <form method="get" name="form2"action="test2.php"> <td> <input type="hidden" name="get_sunday" value= "<?php echo date("Y-m-d", mktime(0, 0, 0, $mm, $sunday_last, $yyyy)); ?>"> <input type="submit" name="Submit2" value="前週へ"> </td> </form> <? //週カレンダー(前週ボタン作成)ここまで //週カレンダー日付を入れる $w2 = $sunday_num; $select_day = date("Y-m-d", mktime(0, 0, 0, $mm, $w2, $yyyy)); $i = 0; while($i < 7) { //日曜日から順に日付を$select_dayに入れていく ?> <td bgcolor="#CCFFFF"><? echo date("m月d日", mktime(0, 0, 0, $mm, $w2+$i, $yyyy)) ?></td> <? // 日付けを一つ繰り上げる $i++; } ?> <form method="get" name="form2" action="test2.php"> <td> <input type="hidden" name="get_sunday" value= "<?php echo date("Y-m-d", mktime(0, 0, 0, $mm, $sunday_next, $yyyy)); ?>"> <input type="submit" name="Submit" value="次週へ"> </td> </form> </table> </body> </html>

    • 締切済み
    • PHP
  • 指定した日付から今日までの日数をもとめるには?

    指定した日が例えば平成8年3月25日で今日までの日数は =IIf(Format([年月日],"dd")>Format(Date(),"dd"),DateDiff("d",[年月日],Date())-1,DateDiff("d",[年月日],Date()))と入力して3249日というふうに求めることができたのですがこの逆で指定した日付から3249日後は何年何ヶ月何日経っているのかを知りたい場合はどのようなことをしたらいいのかわからないです。すいません教えて下さい。 同じような質問が以前にしてあったらごめんなさい。

  • ホームページで毎月第3日曜日を表示しその日を過ぎた

    ホームページで毎月第3日曜日の日付を表示していますが、月が替わると翌月に切り替わってしまいます。その日(当月の第3日曜日)が過ぎてから翌月の第3日曜日に切り替えたいのですが、判定方法をどなたかご存知の方がいらっしゃいましたらご伝授いただけますでしょうか? <script> var d=new Date(); d.setDate(14); for(var i=0;i<1;i++){ document.write(d.getFullYear()+"年"+(d.getMonth()+2)+"月"+(21-d.getDay())+"日 (日曜日)"); d.setMonth(d.getMonth()+1); } </script> で現在コーディングしています。 当月と翌月を出す事も考えています。 宜しくお願い致します。

  • なぜか祝日判定がうまくいきません

    Calendar::Japanese::Holiday を利用して以下の様な祝日判定のルーチンをテストしているのですが、なぜか#(1)あるいは#(2)のようにサブルーチン内部で値を明示してやらないと正常動作(祝日判定)しません。 そこでCalendar::Japanese::HolidayのisHolidayルーチンの方に値が正常に渡っていないのかと考え、#(3)のようなチェック用のソースを組み入れてみたりもしたのですが、$year, $mon, $dayそれぞれ正常に値は渡っていました。 どのようにすれば正常動作するようになるのでしょうか? my %spdate = (#すでに$y、$m、$dにはそれぞれ2012、05、05と値が入っています。 'year' =>$y, 'month' =>$m, 'day' =>$d, ); $spdate = \%spdate; &check_date($spdate); sub &check_date{ my($spdate) = @_; #($spdate->{year},$spdate->{month},$spdate->{day})=(2012,05,05); #(1) #my $jpholiday = isHoliday(2012,05,05); #(2) my $jpholiday = isHoliday($spdate->{year},$spdate->{month},$spdate->{day}); if($jpholiday){ push(@error, 'It is a holidays today'); } }#end #Calendar::Japanese::Holiday #http://search.cpan.org/~kztomita/Calendar-Japanese-Holiday-0.03/ sub isHoliday { my ($year, $mon, $day, $furikae) = @_; #test #(3) print "Content-type: text/html; charset=utf8\n\n"; print "$year"; print "$mon"; print "$day"; my $holidays; if ($year == $Cache_holidays_Year && $mon == $Cache_holidays_Month) { $holidays = $Cache_holidays; # From Cache } else { $holidays = getHolidays($year, $mon, 1); return if not defined $holidays; # Cache $Cache_holidays = $holidays; $Cache_holidays_Year = $year; $Cache_holidays_Month = $mon; } return if !exists $holidays->{$day}; return if (!$furikae && $holidays->{$day} eq $FurikaeStr); return $holidays->{$day}; }#end

    • ベストアンサー
    • Perl
  • ACCESS フォーム 別テーブルの情報で判定する

    こんにちは。 ACCESS2007でフォームを作成しました。 抽出した結果に対し、別テーブルの情報をもとに判定を行いたいと思っていますが、 どなたか、教えてください・・・。 T-注文に、商品コード、仮受付日、注文NO、数量、県 の項目があり、これをフォームにしています。 フォームは注文番号を入力し、注文内容を表示(あいまい検索)できるようにしています。 ‐------------------------------------------- 注文番号 |○○○| --------------------------------------------- 商品コード|仮受付日|注文NO|数量|県| 200|20010/8/10|○○○|3|東京| 201|20010/8/12|○○○|4|東京| 203|20010/8/10|○○○|8|東京| 204|20010/8/13|○○○|8|東京| 205|20010/8/13|○○○|5|東京| 206|20010/8/13|○○○|10|東京| --------------------------------------------- Private Sub SC01_AfterUpdate() Dim L1 As String If Nz(注文NO, "") <> "" Then L1 = L1 & " AND [注文番号] Like" & "'*" & Me.注文NO & "*'" End If If L1 <> "" Then Me.Filter = Mid(L1, 6) Me.FilterOn = True Else Me.Filter = "" Me.FilterOn = False End If End Sub このフォームに判定という項目を追加し、 注文番号で検索した結果の一行ごとに、 "◎"、"○"、"M△"、"M×"、"△"、"×"、"受付済み"の判定を 下記の確保テーブルを参照して行いたいのですが、どのようにすればよいか 教えていただけないでしょうか? 評価基準は: ◎=商品名コードが一致し、確保日と仮受付日が一致、県が一致、受付済みがNO、確保数と数量が一致する場合。 ○=商品名コードが一致し、受付済みがNO、県が一致、確保日が仮受付日より小さい、この条件を満たす確保数(合計)が数量より大きい場合。 △=商品名コードが一致し、受付済みがNO、県が一致、確保日が仮受付日より小さい、この条件を満たす確保数(合計)1以上だが、数量には満たない場合。 M○=商品名コードが一致し、受付済みがNO、県が一致、確保日の月=<仮受付日の月、この条件を満たす確保数(合計)が数量より大きい場合。 M△=商品名コードが一致し、受付済みがNO、県が一致、確保日の月=<仮受付日の月、この条件を満たす確保数(合計)1以上だが、数量には満たない場合。 ×=商品名コードが一致し、受付済みがNO、県が一致、確保日の月=<仮受付日の月、この条件を満たす確保数(合計)が0、 あるいは、商品名コードが一致し、受付済みがNO、県が一致、確保日の月=<仮受付日の月、この条件のレコードが存在しない場合。 "受付済み"=注文番号と注文N0が一致し、受付済みがYESのレコードがある場合。  ------------------------------------------- テーブル名:確保 フィールド 商品コード|受付済み|確保日|確保数|注文N0|県| 200|N|20010/8/10|3|○○○|東京 201|N|20010/5/12|5|○○○|東京 203|N|20010/5/20|3|○○○|東京 203|N|20010/5/20|4|○○○|東京 203|N|20010/5/20|4|○○○|埼玉 204|N|20010/8/15|8|○○○|東京 205|N|20010/8/20|6|○○○|東京 206|N|20010/9/20|1|○○○|東京 206|N|20010/5/20|1|○○○|東京 206|N|20010/8/28|8|○○○|東京 206|N|20010/8/28|8|○○○|埼玉 ------------------------------------------- 注文番号 |○○○| --------------------------------------------- 商品コード|仮受付日|注文NO|数量|県|判定 200|20010/8/10|○○○|3|東京|◎ 201|20010/8/12|○○○|4|東京|○ 203|20010/8/10|○○○|8|東京|△ 204|20010/8/13|○○○|8|東京|× 205|20010/8/13|○○○|5|東京|M○ 206|20010/8/13|○○○|10|東京|M△ ---------------------------------------------

  • CakePHPで毎年同じ月日を判定する方法

    毎年ある時期がくると「開催中」という文字が自動表示される処理を考えているのですが、うまく表示できずに悩んでいます。 具体的にいうと、DATE型の「start」と「end」フィールドを今日の日付とを比較し、「start」と「end」の期間中であればそのテーブルに含まれる文字列(title)を表示するという具合です。 以下の段階では、年まで一致すれば問題なく表示されるのですが、年が変わると当然ながら表示されなくなってしまいます。 テーブル 「title(タイトル)」「start(開始日)」「end(終了日)」 コントローラ $date = date("Y-m-d", mktime(0,0,0, date("m"), date("d"), date("Y"))); $conditions = array('hoge.start <' => $date,'hoge.end >' => $date); $this->set('data',$this->hoge->find('all',array('conditions'=>$conditions))); ビュー foreach($data as $data){ echo $data['hoge']['title']"; } 年に関係なく、月日だけで繰り返し判断するにはどうすればよいのか、ぜひご教示ください。

    • ベストアンサー
    • PHP

専門家に質問してみよう