[ 岡山大学 | 理学部 | 地球科学科 | 地球および惑星大気科学研究室 ]

2019年度 大気科学演習1

シェルスクリプト

全部の問題を解かなければならないというものではありません. そこそこ難しい問題が混ざっています. できる人はいろいろやってみてください. それ以外の人は,できる範囲でやってみてください.

練習問題6

FizzBuzz (フィズバズ)

以下のような感じで表示されたらよい.

1 
2 
Fizz
4
Buzz
Fizz
7 
8 
Fizz
Buzz
11
Fizz
13
14 
FizzBuzz
16
...

とりあえず,100くらいまで表示してみる.

ヒント

ゆっくりにする

普通にスクリプトを書くと一瞬で100まで表示されてしまう. あんまり速いと楽しくないので,sleep というコマンドを使ってみる. sleep は後ろに数字をひとつ書いて使う. 後ろに書いた数字の秒数だけ,処理を停止する. 例えば,

sleep 10

とすると,10秒間停止する(10秒も停止させたら鬱陶しくなるので数字は適当に調整しましょう).

練習問題6a

世界のナベアツ

3の倍数と3のつく数字ではアホになる.

1 
2 
AHO
4
5
AHO
7 
8 
AHO
10
11
AHO
AHO
14
AHO
16
...

ヒント

変数 text に文字列 word が含まれるかどうか調べる

if [ $( echo $text | grep $word ) ]; then
    echo 'found'
  else
    echo 'not found'
fi


練習問題7

月の日数を答える

グレゴリオ暦

練習問題7a

曜日判定


練習問題8

素数判定

練習問題8a

素数探索

ヒント

練習問題8b

素因数分解


練習問題9

スクリプトに引数 m を渡して,次の数列を計算させる

X_{0} = X_{1} = ... = X_{m-2} = 0, X_{m-1} = 1
X_{n+m} = X_n + X_{n+1} + ... + X_{n+m-1}


練習問題10

文書中で使用されている各アルファベットの使用回数を数える.

/mnt/data/text/My_favorite_things.txt
/mnt/data/text/Hotel_Mauna_Kea.txt
/mnt/data/text/Potential_Vorticity.txt
/mnt/data/text/Lorem_ipsum.txt
/mnt/data/text/Pangram.txt

ヒント

for char in {a..z}; do
  echo $char
done

infile という名前のファイルに中にある Win を Mac に置き換える

$ sed -e "s/Win/Mac/g" infile

以下のようにすれば削除になる

$ sed -e "s/Win//g" infile

入力はパイプで流し込むことも可

$ cat infile | sed -e "s/Win/Mac/g"

[a-z] は a から z までのいずれかの文字

$ sed -e "s/[a-z]/X/g" infile

[^a-z] は a から z までのいずれかの文字以外

$ sed -e "s/[^a-z]/X/g" infile
$ echo ${word,,}

あるいは

$ echo ${word} | tr A-Z a-z
$ wc -m infile
$ cat infile | wc -m

余談

エドガー・アラン・ポーの有名な小説.下のリンク先を見るとネタバレしちゃうので,これから小説を読むつもりの人は考えてからクリックしてください.




Last Updated: 2019/11/22, Since: 2019/11/07.
This page is generated by Makefile.rd2html.