天天看點

shell整理(31)===判斷平年閏年和嵌套循環的小例子

題目(一)

有1 2 3 4 四位數,任意組合有多少種互不相同且無重複的數字,分别是什麼?

shell代碼如下:

<code>#!/bin/bash</code>

<code>for</code> <code>i </code><code>in</code> <code>`</code><code>seq</code> <code>4`</code>

<code>do</code>

<code>        </code><code>for</code> <code>x </code><code>in</code> <code>`</code><code>seq</code> <code>4`</code>

<code>        </code><code>do</code>

<code>                </code><code>for</code> <code>y </code><code>in</code> <code>`</code><code>seq</code> <code>4 `</code>

<code>                </code><code>do</code>

<code>                         </code><code>[ $x -</code><code>eq</code> <code>$i  ] &amp;&amp; </code><code>continue</code>

<code>                         </code><code>[ $x -</code><code>eq</code> <code>$y  ] &amp;&amp; </code><code>continue</code>

<code>                         </code><code>[ $i -</code><code>eq</code> <code>$y  ] &amp;&amp; </code><code>continue</code>

<code>                        </code><code>echo</code> <code>$i$x$y             </code>

<code>                </code><code>done</code>

<code>        </code><code>done</code>

<code>done</code>

輸出如下一共有24 種:

[root@localhost ding]# bash 11.sh 

123

124

132

134

142

143

213

............

例如:我們把題目改一下,還是1 2 3 4 輸出如下規律

[root@localhost ding]# bash 12.sh 

234

[root@localhost ding]#

shell 代碼如下:

<code>        </code><code>for</code> <code>x </code><code>in</code> <code>`</code><code>seq</code> <code>$i 4`</code>

<code>                </code><code>for</code> <code>y </code><code>in</code> <code>`</code><code>seq</code> <code>$x 4`</code>

<code>                </code><code>[ $i -</code><code>eq</code> <code>$x ] &amp;&amp; </code><code>continue</code>

<code>                </code><code>[ $x -</code><code>eq</code> <code>$y  ] &amp;&amp; </code><code>continue</code>

<code>                </code><code>echo</code> <code>$i$x$y</code>

<a href="https://s5.51cto.com/wyfs02/M00/A6/38/wKioL1nLOJjQK5SrAAB53A4ypI8621.png-wh_500x0-wm_3-wmp_4-s_1290789857.png" target="_blank"></a>

第一個題對着這個圖完全可以想出來,一共有64種,但是我們加上判斷什麼的最終篩選出24種

(二)使用者任意輸入四個數字,判斷是平年還是閏年

判斷規則:

看年份末兩位不能被4整除的是平年,被4整除但末兩位都是0 的,要看前兩位能被4整除的是閏年,不能整除的是平年。例如:1996 、2000閏年     1990 、1997平年

輸出如下:

[root@localhost ding]# bash 14.sh 

Input:1996

Run Year

Input:2000

Input:1990

Ping Year

Input:1997

[root@localhost ding]# 

<code>pre_1() {</code>

<code>        </code><code>a=${</code><code>#REPLY}</code>

<code>        </code><code>[ -z $REPLY ] &amp;&amp; </code><code>echo</code> <code>-e </code><code>"\033[32m plz Input! \033[0m"</code> <code>&amp;&amp; </code><code>exit</code> <code>0</code>

<code>        </code><code>[ $a -lt 4 ] &amp;&amp; </code><code>echo</code> <code>"Plz Input more four num!"</code> <code>&amp;&amp; </code><code>exit</code> <code>0</code>

<code>}</code>

<code>pre_2() {</code>

<code>        </code><code>b=`</code><code>echo</code> <code>$REPLY |</code><code>cut</code> <code>-c 3-4`</code>

<code>        </code><code>d=`</code><code>echo</code> <code>$REPLY |</code><code>cut</code> <code>-c 1-2`</code>

<code>        </code><code>c=$(($b%100))        </code><code>#判斷後兩位是倆0,這是一種方法</code>

<code>        </code><code>[ $c -</code><code>eq</code> <code>0  ] &amp;&amp; [ $(($d%4)) -</code><code>eq</code> <code>0 ] &amp;&amp; </code><code>echo</code> <code>"Run Year"</code> <code>&amp;&amp; </code><code>exit</code> <code>0</code>

<code>       </code><code>[ $c -</code><code>eq</code> <code>0  ] &amp;&amp; [ $(($d%4)) -</code><code>ne</code> <code>0 ] &amp;&amp; </code><code>echo</code> <code>"Ping Year"</code> <code>&amp;&amp; </code><code>exit</code> <code>0</code>

<code>        </code><code>f=$(($b%4))</code>

<code>echo</code> <code>-n </code><code>"Input:"</code>

<code>read</code>

<code>pre_1</code>

<code>pre_2</code>

<code>if</code> <code>[ $f -</code><code>ne</code> <code>0 ];</code><code>then</code>

<code>        </code><code>echo</code> <code>"Ping Year"</code>

<code>else</code>

<code>        </code><code>echo</code> <code>"Run Year"</code>

<code>fi</code>

<code></code>

本文轉自 大雪兒 51CTO部落格,原文連結:http://blog.51cto.com/dingxue/1969132,如需轉載請自行聯系原作者