シェルスクリプト入門 - biosciencedbc.jp76 最終課題(2 /2) 次のシェルスクリプト・test8.shを書いて実行します
シェルスクリプト プログラミングスタイル
-
Upload
heidi-sosa -
Category
Documents
-
view
28 -
download
0
description
Transcript of シェルスクリプト プログラミングスタイル
![Page 1: シェルスクリプト プログラミングスタイル](https://reader036.fdocument.pub/reader036/viewer/2022062309/5681350b550346895d9c5cc4/html5/thumbnails/1.jpg)
シェルスクリプトプログラミングスタイル
USP 友の会会員 鳥海秀一
![Page 2: シェルスクリプト プログラミングスタイル](https://reader036.fdocument.pub/reader036/viewer/2022062309/5681350b550346895d9c5cc4/html5/thumbnails/2.jpg)
自己紹介• 名前:鳥海秀一• 年齢:45歳• 職業:プログラマ• 所属:USP友の会会員データベース友の会会員日本ファシリテーション協会会員その他
![Page 3: シェルスクリプト プログラミングスタイル](https://reader036.fdocument.pub/reader036/viewer/2022062309/5681350b550346895d9c5cc4/html5/thumbnails/3.jpg)
スクリプト言語としての
![Page 4: シェルスクリプト プログラミングスタイル](https://reader036.fdocument.pub/reader036/viewer/2022062309/5681350b550346895d9c5cc4/html5/thumbnails/4.jpg)
シェルの特徴
![Page 5: シェルスクリプト プログラミングスタイル](https://reader036.fdocument.pub/reader036/viewer/2022062309/5681350b550346895d9c5cc4/html5/thumbnails/5.jpg)
しょぼい
![Page 6: シェルスクリプト プログラミングスタイル](https://reader036.fdocument.pub/reader036/viewer/2022062309/5681350b550346895d9c5cc4/html5/thumbnails/6.jpg)
多次元配列・連想配列(ハッ・シュ)オブジェクト指向・
![Page 7: シェルスクリプト プログラミングスタイル](https://reader036.fdocument.pub/reader036/viewer/2022062309/5681350b550346895d9c5cc4/html5/thumbnails/7.jpg)
何がよいの?
![Page 8: シェルスクリプト プログラミングスタイル](https://reader036.fdocument.pub/reader036/viewer/2022062309/5681350b550346895d9c5cc4/html5/thumbnails/8.jpg)
良い点その1
![Page 9: シェルスクリプト プログラミングスタイル](https://reader036.fdocument.pub/reader036/viewer/2022062309/5681350b550346895d9c5cc4/html5/thumbnails/9.jpg)
2つのプログラミングスタイルをサポート
![Page 10: シェルスクリプト プログラミングスタイル](https://reader036.fdocument.pub/reader036/viewer/2022062309/5681350b550346895d9c5cc4/html5/thumbnails/10.jpg)
1つ目
![Page 11: シェルスクリプト プログラミングスタイル](https://reader036.fdocument.pub/reader036/viewer/2022062309/5681350b550346895d9c5cc4/html5/thumbnails/11.jpg)
手続き型のスタイル
![Page 12: シェルスクリプト プログラミングスタイル](https://reader036.fdocument.pub/reader036/viewer/2022062309/5681350b550346895d9c5cc4/html5/thumbnails/12.jpg)
2つ目
![Page 13: シェルスクリプト プログラミングスタイル](https://reader036.fdocument.pub/reader036/viewer/2022062309/5681350b550346895d9c5cc4/html5/thumbnails/13.jpg)
関数型のスタイル
![Page 14: シェルスクリプト プログラミングスタイル](https://reader036.fdocument.pub/reader036/viewer/2022062309/5681350b550346895d9c5cc4/html5/thumbnails/14.jpg)
誰が言ってるの?
![Page 15: シェルスクリプト プログラミングスタイル](https://reader036.fdocument.pub/reader036/viewer/2022062309/5681350b550346895d9c5cc4/html5/thumbnails/15.jpg)
僕です (^^;
![Page 16: シェルスクリプト プログラミングスタイル](https://reader036.fdocument.pub/reader036/viewer/2022062309/5681350b550346895d9c5cc4/html5/thumbnails/16.jpg)
元ネタ
![Page 17: シェルスクリプト プログラミングスタイル](https://reader036.fdocument.pub/reader036/viewer/2022062309/5681350b550346895d9c5cc4/html5/thumbnails/17.jpg)
計算機プログラムの
構造と解釈
(略称 SICP )
![Page 18: シェルスクリプト プログラミングスタイル](https://reader036.fdocument.pub/reader036/viewer/2022062309/5681350b550346895d9c5cc4/html5/thumbnails/18.jpg)
Structure and Interpretation of
Computer Programs
![Page 19: シェルスクリプト プログラミングスタイル](https://reader036.fdocument.pub/reader036/viewer/2022062309/5681350b550346895d9c5cc4/html5/thumbnails/19.jpg)
MITの教科書
![Page 20: シェルスクリプト プログラミングスタイル](https://reader036.fdocument.pub/reader036/viewer/2022062309/5681350b550346895d9c5cc4/html5/thumbnails/20.jpg)
• オブジェクト準拠の方法
• ストリーム処理の方法
プログラムの組織化方法
=> 手続き型スタイル
=> 関数型スタイル
![Page 21: シェルスクリプト プログラミングスタイル](https://reader036.fdocument.pub/reader036/viewer/2022062309/5681350b550346895d9c5cc4/html5/thumbnails/21.jpg)
2つのスタイルはまるで違います
![Page 22: シェルスクリプト プログラミングスタイル](https://reader036.fdocument.pub/reader036/viewer/2022062309/5681350b550346895d9c5cc4/html5/thumbnails/22.jpg)
手続き型スタイル• 計算モデルチューリングマシン
• 言語手続き型プログラミング言語
• 主な操作対象変数
![Page 23: シェルスクリプト プログラミングスタイル](https://reader036.fdocument.pub/reader036/viewer/2022062309/5681350b550346895d9c5cc4/html5/thumbnails/23.jpg)
関数型スタイル• 計算モデルラムダ計算
• 言語関数型プログラミング言語
• 主な操作対象ストリーム
![Page 24: シェルスクリプト プログラミングスタイル](https://reader036.fdocument.pub/reader036/viewer/2022062309/5681350b550346895d9c5cc4/html5/thumbnails/24.jpg)
具体例で説明します
![Page 25: シェルスクリプト プログラミングスタイル](https://reader036.fdocument.pub/reader036/viewer/2022062309/5681350b550346895d9c5cc4/html5/thumbnails/25.jpg)
問題
80 個の“ =” で画面に罫線を引け
![Page 26: シェルスクリプト プログラミングスタイル](https://reader036.fdocument.pub/reader036/viewer/2022062309/5681350b550346895d9c5cc4/html5/thumbnails/26.jpg)
手続き型スタイル
for ((i=0; i<80; ++i)) do
printf =
done; echo
![Page 27: シェルスクリプト プログラミングスタイル](https://reader036.fdocument.pub/reader036/viewer/2022062309/5681350b550346895d9c5cc4/html5/thumbnails/27.jpg)
関数型スタイル
yes '' | head -80 | tr \\n = | paste - <(echo)
あるいは
printf '%80s\n' | tr ' ' =
![Page 28: シェルスクリプト プログラミングスタイル](https://reader036.fdocument.pub/reader036/viewer/2022062309/5681350b550346895d9c5cc4/html5/thumbnails/28.jpg)
2つのスタイルをサポートしている言語
・ Lisp・ Perl・ Ruby・ Python
・ JavaScript ・ Ocaml・ Scala・ Clojure
![Page 29: シェルスクリプト プログラミングスタイル](https://reader036.fdocument.pub/reader036/viewer/2022062309/5681350b550346895d9c5cc4/html5/thumbnails/29.jpg)
良い点その2
![Page 30: シェルスクリプト プログラミングスタイル](https://reader036.fdocument.pub/reader036/viewer/2022062309/5681350b550346895d9c5cc4/html5/thumbnails/30.jpg)
しょぼい
![Page 31: シェルスクリプト プログラミングスタイル](https://reader036.fdocument.pub/reader036/viewer/2022062309/5681350b550346895d9c5cc4/html5/thumbnails/31.jpg)
ドナルド クヌース・曰く
![Page 32: シェルスクリプト プログラミングスタイル](https://reader036.fdocument.pub/reader036/viewer/2022062309/5681350b550346895d9c5cc4/html5/thumbnails/32.jpg)
能力を限界まで圧迫するような
![Page 33: シェルスクリプト プログラミングスタイル](https://reader036.fdocument.pub/reader036/viewer/2022062309/5681350b550346895d9c5cc4/html5/thumbnails/33.jpg)
「おもちゃ」のプログラムを書くことは
![Page 34: シェルスクリプト プログラミングスタイル](https://reader036.fdocument.pub/reader036/viewer/2022062309/5681350b550346895d9c5cc4/html5/thumbnails/34.jpg)
非常に有益です
![Page 35: シェルスクリプト プログラミングスタイル](https://reader036.fdocument.pub/reader036/viewer/2022062309/5681350b550346895d9c5cc4/html5/thumbnails/35.jpg)
道具立てが少ないほど
![Page 36: シェルスクリプト プログラミングスタイル](https://reader036.fdocument.pub/reader036/viewer/2022062309/5681350b550346895d9c5cc4/html5/thumbnails/36.jpg)
楽しみは多い
![Page 37: シェルスクリプト プログラミングスタイル](https://reader036.fdocument.pub/reader036/viewer/2022062309/5681350b550346895d9c5cc4/html5/thumbnails/37.jpg)
具体例で説明します
![Page 38: シェルスクリプト プログラミングスタイル](https://reader036.fdocument.pub/reader036/viewer/2022062309/5681350b550346895d9c5cc4/html5/thumbnails/38.jpg)
時間がないのでやめておきます
![Page 39: シェルスクリプト プログラミングスタイル](https://reader036.fdocument.pub/reader036/viewer/2022062309/5681350b550346895d9c5cc4/html5/thumbnails/39.jpg)
続きはUSP友の会学習会で
\(^ o ^)/
![Page 40: シェルスクリプト プログラミングスタイル](https://reader036.fdocument.pub/reader036/viewer/2022062309/5681350b550346895d9c5cc4/html5/thumbnails/40.jpg)
ところで…
![Page 41: シェルスクリプト プログラミングスタイル](https://reader036.fdocument.pub/reader036/viewer/2022062309/5681350b550346895d9c5cc4/html5/thumbnails/41.jpg)
問題
80 個の“ =” で画面に罫線を引け
![Page 42: シェルスクリプト プログラミングスタイル](https://reader036.fdocument.pub/reader036/viewer/2022062309/5681350b550346895d9c5cc4/html5/thumbnails/42.jpg)
状況によりますが…一般的にはこう書きます
echo "==========…="
80 個
![Page 43: シェルスクリプト プログラミングスタイル](https://reader036.fdocument.pub/reader036/viewer/2022062309/5681350b550346895d9c5cc4/html5/thumbnails/43.jpg)
ご清聴ありがとうごさいました