Quantcast
Channel: Bashタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 2884

ピラミッドを表示するシェルプログラム

$
0
0

はじめに

Bashプログラミングの小ネタとして作成しました。
「*」を使ってピラミッドを表示してみます。

左寄り5段のピラミッド

ソース

#!/bin/bashecho"*"echo"**"echo"***"echo"****"echo"*****"

実行結果

$ ./pyramid.sh
*
**
***
****
*****

指定した数の段数を表示するピラミッド

先程のプログラムは、あれでも立派なプログラムです。
しかし、柔軟性に欠けるため、ユーザに段数を指定させるように修正します。

ソース

#!/bin/bashast='*'echo-n"Input number => "read num

for i in$(seq 1 $num)do
  echo"$ast"ast='*'${ast}done

forでなく、whileでカウンターを使っても良いですね。
whileよりもforの方が可読性が高いので採用しました。

実行結果

$ ./pyramid.sh
Input number => 6
*
**
***
****
*****
******

指定した数の段数を表示するピラミッド(中央揃え版)

結構難しかったです。
「*」の左側に空白が必要なのでそれをどのように扱うか。
また、空白を1つずつ減らす処理が必要になります。

ソース

$ cat center_pyramid.sh
#!/bin/bashast='*'spc=' 'echo-n"Input number => "read num

(( spc_cnt =$num - 2 ))for i in$(seq 1 $spc_cnt)do
  spc=' '${spc}done

for j in$(seq 1 $num)do
  echo"$spc""$ast"ast='**'${ast}spc=${spc#' '}done

空白を削除する方法に、変数の文字列置換を使用しました。

実行結果

$ ./center_pyramid.sh
Input number => 6
     ************************************

おわりに

このプログラムを作成することで

  • 分岐構文
  • 繰り返し構文
  • readコマンド
  • testコマンド
  • 特別な意味を持つ記号の扱い
  • 変数の文字列置換
  • Bashのお作法

が理解出来ました。


Viewing all articles
Browse latest Browse all 2884

Trending Articles