SlideShare a Scribd company logo
し第弐開発グループ

ぇ  高山 智史




る 、襲来
アジェンダ
第壱話   しぇるの基本機能
第弐話   しぇるの色々な機能
第参話   しぇるのデバッグ
第壱話
  し
  ぇ
  る
  の 基本機能
変数
 書式
VALIABLE=value   変数VALIABLEに値valueを代入する。

※   変数として利用可能な文字は、英数字、「_(アンダーバー)」
※   数字は変数名の先頭文字にできない。
※   大文字、小文字は区別される。
※   変数への代入はスペースを空けてはいけない。

変数VALIABLEの参照方法
① $VALIABLE ② ${VALIABLE}
標準入出力
標準入力      シェルに対する
          キーボードからの入力
標準出力      結果の出力は
          その端末画面上に現れる
標準エラー出力   エラーメッセージも
          その端末画面に現れる
ファイルディスクリプタ
プロセスやプログラムがファイルやディレクトリを
操作・処理する時に仲介役として利用される仕組み

ファイルを開く際に、現在使用されていない若い番号から割り当てられる


※ 固定で割り当てられるファイルディスクリプタ

 ファイルディスクリプタ
                      対応するファイル
     番号
      0        標準入力(stdin : キーボード)
      1        標準出力(stdin : 端末画面)
      2        標準エラー出力(stderr : 端末画面)
リダイレクション
入力元・出力先を変更する仕組み

書式
(0)< file    標準入力をファイル(file)から読み込む
(0)<< file   標準入力をヒアドキュメントから読み込む
(0)< & x     標準入力をx番のファイルディスクリプタから
             読み込む
(0)< & -     標準入力をクローズする
 (1)> file   標準出力の内容をファイル(file)に書き込む
(1)>> file   標準出力の内容をファイル(file)に追加書き
(1)> & x     標準出力をx番のファイルディスクリプタに書く
(1)> & -     標準出力をクローズする
ヒアドキュメント
標準入力をスクリプト内部で生成する仕組み

書式
<< str
document        区切り文字「str」で囲まれた
str             document部分を標準入力に渡す。

<<- str         区切り文字「str」で囲まれた
[tab]document   document部分を標準入力に渡す。
str             各行頭のタブ1つは削除される。
<< ‘str’        区切り文字「str」で囲まれた
document        document部分を標準入力に渡す。
str             document部分の変数は展開されない。
パイプ
標準出力をそのまま別のプロセスの
標準入力へ渡す仕組み

書式

                     コマンドcmd1の標準出力を
     cmd1 | cmd2
                     コマンドcmd2の標準入力に渡す


                     コマンドcmd1の
cmd1 2 > &1 | cmd2   標準出力と標準エラー出力を
                     コマンドcmd2の標準入力に渡す
メタキャラクタ
出力先・入力元を変更する仕組み

   ~     ホームディレクトリに置き換える
   !     過去に実行したコマンドに対して操作を行う
 `cmd`   コマンドcmdの実行結果に置き換わる
   &     バックグラウンドでコマンドを実行する
         文字列strは$、¥、`以外
 ‚str‛
         そのままの文字列として処理する
 ¥char   文字charの特殊な意味を無効にする
   ;     コマンド行の区切りと解釈される
   #     #以後行末までをコメント扱いにする
位置パラメータ
コマンド行を分解してそれぞれの値を保持する変数


 $0   シェルスクリプトの名前
      スクリプトに指定された
 $n
      第n引数の値(nは1 ~ 9まで)
 $#   スクリプトに指定された引数の数
 $@   スクリプトに指定された引数全部
 $*   スクリプトに指定された引数全部
特殊変数
※ 書き込み禁止であり、
  値を自分でセットすることはできない

       コマンド実行時の終了ステータスを表わ
 $?    す
       現在動作しているコマンドの
 $$    プロセスIDがセットされる
       バックグラウンドで起動したコマンドの
  $!   プロセスIDがセットされる
       シェルの起動時のフラグの一覧が
 $-    セットされる
しぇる の色々
      な
第    機
弐話   能
数値の計算
          整数の計算を行う。
expr コマンド
          数値として0~9の値を認識する。

四則演算
 足し算    expr   int1   +   int2
 引き算    expr   int1   –   int2
 掛け算    expr   int1   *   int2
 割り算    expr   int1   /   int2
 剰余算    expr   int1   %   int2
数値の比較
              評価結果に従い、
test コマンド     真(0)か偽(1)かの終了ステータスを返す
              ※ 画面上への出力等は行わない

 test int1 –eq int2    int1とint2が等しい時真
 test int1 –ne int2    int1とint2が等しくない時真
  test int1 –lt int2   int1がint2より小さい時真
 test int1 –le int2    int1がint2より小さいか等しい時真
 test int1 –gt int2    int1がint2より大きい時真
 test int1 –ge int3    int1がint2より小さいか等しい時真
浮動小数点を含む計算
 足し算    echo   ‚num1   +   num2‛   |   bc
 引き算    echo   ‚num1   -   num2‛   |   bc
 掛け算    echo   ‚num1   *   num2‛   |   bc
 割り算    echo   ‚num1   /   num2‛   |   bc

小数点の制度を設定する場合
scale コマンド 小数点第何位まで出力するか指定する

  割り算   echo ‚scale=3; num1 / num2‛ | bc
文字列の操作
文字列の置き換え
           標準入力からデータを受け取って、
sed コマンド
           編集後の結果を標準出力に書きだす
書式
sed -e s/ 置換条件 / 置き換え条件 /g

文字列の連結
書式
STRING1=Hello STRING2=World
VAR=${STRING1}${STRING2}
文字列の操作
ホワイトスペースのトリム
書式
STRING=`echo $STRING`

文字列の長さ
書式
expr ‚対象文字列‛ : ‘.*’

※ exprは引数にコロン(:)があると、
  その右側と左側の文字列を比較して
  「先頭から何文字まで等しいか」という値を返す
文字列の操作
文字列の一部分の切り出し①
書式
expr ‚対象文字列‛ : ‚regexp ¥ ( regexp ¥ ) regexp‛

文字列の一部分の切り出し②
cut コマンド    文字列の中から所定の文字列を抜きだす
書式
echo ‚対象文字列‛ | cut –c 開始位置-終了位置
フィールドで切り出す場合
echo ‚対象文字列‛ | cut –d ‘区切り文字’ –f 開始位置
しぇるの
第参
 話

     デバッグ
シェルオプションを用いたデバッグ
小数点の制度を設定する場合
  -n   実行はせず構文チェックだけ行う
  -v   次に実行するコマンド行を表示する
  -x   実行するコマンドの内容を表示する
  -i   対話的モードで処理する

書式
#!/bin/sh –xv ( sh –xv scirptname )
ご清聴ありがとうございました

More Related Content

What's hot

for文
for文for文
for文
APG4b
 
【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第5回 「配列 と レコード 」
【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第5回 「配列 と レコード 」【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第5回 「配列 と レコード 」
【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第5回 「配列 と レコード 」
Kaz Aiso
 
新しくプログラミング言語・・・Rubyでやってみた
新しくプログラミング言語・・・Rubyでやってみた新しくプログラミング言語・・・Rubyでやってみた
新しくプログラミング言語・・・RubyでやってみたTomoaki Ueda
 
2011年12月9日
2011年12月9日2011年12月9日
2011年12月9日nukaemon
 
すごいConstたのしく使おう!
すごいConstたのしく使おう!すごいConstたのしく使おう!
すごいConstたのしく使おう!
Akihiro Nishimura
 
JavaScript 勉強会 ― 変数・演算子・文
JavaScript 勉強会 ― 変数・演算子・文JavaScript 勉強会 ― 変数・演算子・文
JavaScript 勉強会 ― 変数・演算子・文
Appresso Engineering Team
 
Ruby紹介3(pdf)
Ruby紹介3(pdf)Ruby紹介3(pdf)
Ruby紹介3(pdf)
Gohryuh
 
【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第4回 「Function と Pro...
【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第4回 「Function と Pro...【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第4回 「Function と Pro...
【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第4回 「Function と Pro...
Kaz Aiso
 
【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第2回 ‟変数と型„
【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第2回 ‟変数と型„【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第2回 ‟変数と型„
【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第2回 ‟変数と型„
Kaz Aiso
 
Clojure programming-chapter-2
Clojure programming-chapter-2Clojure programming-chapter-2
Clojure programming-chapter-2
Masao Kato
 
プロトコル指向 - 夢と現実の狭間 #cswift
プロトコル指向 - 夢と現実の狭間 #cswiftプロトコル指向 - 夢と現実の狭間 #cswift
プロトコル指向 - 夢と現実の狭間 #cswift
Tomohiro Kumagai
 
C++0x in programming competition
C++0x in programming competitionC++0x in programming competition
C++0x in programming competition
yak1ex
 
Swift 3 を書くときに知っておきたい API デザインガイドライン #love_swift #akibaswift
Swift 3 を書くときに知っておきたい API デザインガイドライン #love_swift #akibaswiftSwift 3 を書くときに知っておきたい API デザインガイドライン #love_swift #akibaswift
Swift 3 を書くときに知っておきたい API デザインガイドライン #love_swift #akibaswift
Tomohiro Kumagai
 
ちょっと詳しくJavaScript 第2回【関数と引数】
ちょっと詳しくJavaScript 第2回【関数と引数】ちょっと詳しくJavaScript 第2回【関数と引数】
ちょっと詳しくJavaScript 第2回【関数と引数】株式会社ランチェスター
 
templateとautoの型推論
templateとautoの型推論templateとautoの型推論
templateとautoの型推論
MITSUNARI Shigeo
 
emc++ chapter32
emc++ chapter32emc++ chapter32
emc++ chapter32
Tatsuki SHIMIZU
 
my_min関数の動作説明
my_min関数の動作説明my_min関数の動作説明
my_min関数の動作説明
APG4b
 
Swift 3 で新しくなったところ - 表面から見えにくいところを中心に紹介 #ISAOcorp
Swift 3 で新しくなったところ - 表面から見えにくいところを中心に紹介 #ISAOcorpSwift 3 で新しくなったところ - 表面から見えにくいところを中心に紹介 #ISAOcorp
Swift 3 で新しくなったところ - 表面から見えにくいところを中心に紹介 #ISAOcorp
Tomohiro Kumagai
 
関数型プログラミング in javascript
関数型プログラミング in javascript関数型プログラミング in javascript
関数型プログラミング in javascript
Ryuma Tsukano
 

What's hot (20)

for文
for文for文
for文
 
【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第5回 「配列 と レコード 」
【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第5回 「配列 と レコード 」【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第5回 「配列 と レコード 」
【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第5回 「配列 と レコード 」
 
[xDNCL] 配布資料
[xDNCL] 配布資料[xDNCL] 配布資料
[xDNCL] 配布資料
 
新しくプログラミング言語・・・Rubyでやってみた
新しくプログラミング言語・・・Rubyでやってみた新しくプログラミング言語・・・Rubyでやってみた
新しくプログラミング言語・・・Rubyでやってみた
 
2011年12月9日
2011年12月9日2011年12月9日
2011年12月9日
 
すごいConstたのしく使おう!
すごいConstたのしく使おう!すごいConstたのしく使おう!
すごいConstたのしく使おう!
 
JavaScript 勉強会 ― 変数・演算子・文
JavaScript 勉強会 ― 変数・演算子・文JavaScript 勉強会 ― 変数・演算子・文
JavaScript 勉強会 ― 変数・演算子・文
 
Ruby紹介3(pdf)
Ruby紹介3(pdf)Ruby紹介3(pdf)
Ruby紹介3(pdf)
 
【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第4回 「Function と Pro...
【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第4回 「Function と Pro...【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第4回 「Function と Pro...
【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第4回 「Function と Pro...
 
【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第2回 ‟変数と型„
【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第2回 ‟変数と型„【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第2回 ‟変数と型„
【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第2回 ‟変数と型„
 
Clojure programming-chapter-2
Clojure programming-chapter-2Clojure programming-chapter-2
Clojure programming-chapter-2
 
プロトコル指向 - 夢と現実の狭間 #cswift
プロトコル指向 - 夢と現実の狭間 #cswiftプロトコル指向 - 夢と現実の狭間 #cswift
プロトコル指向 - 夢と現実の狭間 #cswift
 
C++0x in programming competition
C++0x in programming competitionC++0x in programming competition
C++0x in programming competition
 
Swift 3 を書くときに知っておきたい API デザインガイドライン #love_swift #akibaswift
Swift 3 を書くときに知っておきたい API デザインガイドライン #love_swift #akibaswiftSwift 3 を書くときに知っておきたい API デザインガイドライン #love_swift #akibaswift
Swift 3 を書くときに知っておきたい API デザインガイドライン #love_swift #akibaswift
 
ちょっと詳しくJavaScript 第2回【関数と引数】
ちょっと詳しくJavaScript 第2回【関数と引数】ちょっと詳しくJavaScript 第2回【関数と引数】
ちょっと詳しくJavaScript 第2回【関数と引数】
 
templateとautoの型推論
templateとautoの型推論templateとautoの型推論
templateとautoの型推論
 
emc++ chapter32
emc++ chapter32emc++ chapter32
emc++ chapter32
 
my_min関数の動作説明
my_min関数の動作説明my_min関数の動作説明
my_min関数の動作説明
 
Swift 3 で新しくなったところ - 表面から見えにくいところを中心に紹介 #ISAOcorp
Swift 3 で新しくなったところ - 表面から見えにくいところを中心に紹介 #ISAOcorpSwift 3 で新しくなったところ - 表面から見えにくいところを中心に紹介 #ISAOcorp
Swift 3 で新しくなったところ - 表面から見えにくいところを中心に紹介 #ISAOcorp
 
関数型プログラミング in javascript
関数型プログラミング in javascript関数型プログラミング in javascript
関数型プログラミング in javascript
 

Similar to 業務報告会

2012年1月20日
2012年1月20日2012年1月20日
2012年1月20日nukaemon
 
第一回Data mining勉強会 -第二章 - 原案
第一回Data mining勉強会 -第二章 - 原案第一回Data mining勉強会 -第二章 - 原案
第一回Data mining勉強会 -第二章 - 原案
yushin_hirano
 
x86とコンテキストスイッチ
x86とコンテキストスイッチx86とコンテキストスイッチ
x86とコンテキストスイッチ
Masami Ichikawa
 
第一回Data mining勉強会 -第二章
第一回Data mining勉強会 -第二章第一回Data mining勉強会 -第二章
第一回Data mining勉強会 -第二章Tomonobu_Hirano
 
初心者講習会資料(Osaka.R#7)
初心者講習会資料(Osaka.R#7)初心者講習会資料(Osaka.R#7)
初心者講習会資料(Osaka.R#7)
Masahiro Hayashi
 
eZ Publish勉強会9月〜テンプレート言語〜
eZ Publish勉強会9月〜テンプレート言語〜eZ Publish勉強会9月〜テンプレート言語〜
eZ Publish勉強会9月〜テンプレート言語〜
ericsagnes
 
本当にあった怖い話し (やきに駆動 2.0)
本当にあった怖い話し (やきに駆動 2.0)本当にあった怖い話し (やきに駆動 2.0)
本当にあった怖い話し (やきに駆動 2.0)
Oda Shinsuke
 
分散メモリ環境におけるシェルスクリプトの高速化手法の提案
分散メモリ環境におけるシェルスクリプトの高速化手法の提案分散メモリ環境におけるシェルスクリプトの高速化手法の提案
分散メモリ環境におけるシェルスクリプトの高速化手法の提案Keisuke Umeno
 
講座C入門
講座C入門講座C入門
講座C入門
Tokai University
 
Ekmett勉強会発表資料
Ekmett勉強会発表資料Ekmett勉強会発表資料
Ekmett勉強会発表資料
時響 逢坂
 
Hello Dark-Side C# (Part. 1)
Hello Dark-Side C# (Part. 1)Hello Dark-Side C# (Part. 1)
Hello Dark-Side C# (Part. 1)
Yuto Takei
 
ex-2. Excel での切り取りとコピーと貼り付け,Excel の関数
ex-2. Excel での切り取りとコピーと貼り付け,Excel の関数ex-2. Excel での切り取りとコピーと貼り付け,Excel の関数
ex-2. Excel での切り取りとコピーと貼り付け,Excel の関数
kunihikokaneko1
 
関数型言語&形式的手法セミナー(3)
関数型言語&形式的手法セミナー(3)関数型言語&形式的手法セミナー(3)
関数型言語&形式的手法セミナー(3)
啓 小笠原
 
データサイエンスワールドからC++を眺めてみる
データサイエンスワールドからC++を眺めてみるデータサイエンスワールドからC++を眺めてみる
データサイエンスワールドからC++を眺めてみるShintaro Fukushima
 
Node.jsでつくるNode.js ミニインタープリター&コンパイラー
Node.jsでつくるNode.js ミニインタープリター&コンパイラーNode.jsでつくるNode.js ミニインタープリター&コンパイラー
Node.jsでつくるNode.js ミニインタープリター&コンパイラー
mganeko
 
Javaセキュアコーディングセミナー東京第2回講義
Javaセキュアコーディングセミナー東京第2回講義Javaセキュアコーディングセミナー東京第2回講義
Javaセキュアコーディングセミナー東京第2回講義JPCERT Coordination Center
 
Perl勉強会#2資料
Perl勉強会#2資料Perl勉強会#2資料
Perl勉強会#2資料
Kiyo Tsunezumi
 
Lisp Tutorial for Pythonista : Day 3
Lisp Tutorial for Pythonista : Day 3Lisp Tutorial for Pythonista : Day 3
Lisp Tutorial for Pythonista : Day 3
Ransui Iso
 
Synthesijer.Scala (PROSYM 2015)
Synthesijer.Scala (PROSYM 2015)Synthesijer.Scala (PROSYM 2015)
Synthesijer.Scala (PROSYM 2015)
Takefumi MIYOSHI
 

Similar to 業務報告会 (20)

2012年1月20日
2012年1月20日2012年1月20日
2012年1月20日
 
第一回Data mining勉強会 -第二章 - 原案
第一回Data mining勉強会 -第二章 - 原案第一回Data mining勉強会 -第二章 - 原案
第一回Data mining勉強会 -第二章 - 原案
 
x86とコンテキストスイッチ
x86とコンテキストスイッチx86とコンテキストスイッチ
x86とコンテキストスイッチ
 
第一回Data mining勉強会 -第二章
第一回Data mining勉強会 -第二章第一回Data mining勉強会 -第二章
第一回Data mining勉強会 -第二章
 
初心者講習会資料(Osaka.R#7)
初心者講習会資料(Osaka.R#7)初心者講習会資料(Osaka.R#7)
初心者講習会資料(Osaka.R#7)
 
eZ Publish勉強会9月〜テンプレート言語〜
eZ Publish勉強会9月〜テンプレート言語〜eZ Publish勉強会9月〜テンプレート言語〜
eZ Publish勉強会9月〜テンプレート言語〜
 
本当にあった怖い話し (やきに駆動 2.0)
本当にあった怖い話し (やきに駆動 2.0)本当にあった怖い話し (やきに駆動 2.0)
本当にあった怖い話し (やきに駆動 2.0)
 
分散メモリ環境におけるシェルスクリプトの高速化手法の提案
分散メモリ環境におけるシェルスクリプトの高速化手法の提案分散メモリ環境におけるシェルスクリプトの高速化手法の提案
分散メモリ環境におけるシェルスクリプトの高速化手法の提案
 
講座C入門
講座C入門講座C入門
講座C入門
 
Ekmett勉強会発表資料
Ekmett勉強会発表資料Ekmett勉強会発表資料
Ekmett勉強会発表資料
 
Hello Dark-Side C# (Part. 1)
Hello Dark-Side C# (Part. 1)Hello Dark-Side C# (Part. 1)
Hello Dark-Side C# (Part. 1)
 
ex-2. Excel での切り取りとコピーと貼り付け,Excel の関数
ex-2. Excel での切り取りとコピーと貼り付け,Excel の関数ex-2. Excel での切り取りとコピーと貼り付け,Excel の関数
ex-2. Excel での切り取りとコピーと貼り付け,Excel の関数
 
関数型言語&形式的手法セミナー(3)
関数型言語&形式的手法セミナー(3)関数型言語&形式的手法セミナー(3)
関数型言語&形式的手法セミナー(3)
 
データサイエンスワールドからC++を眺めてみる
データサイエンスワールドからC++を眺めてみるデータサイエンスワールドからC++を眺めてみる
データサイエンスワールドからC++を眺めてみる
 
Node.jsでつくるNode.js ミニインタープリター&コンパイラー
Node.jsでつくるNode.js ミニインタープリター&コンパイラーNode.jsでつくるNode.js ミニインタープリター&コンパイラー
Node.jsでつくるNode.js ミニインタープリター&コンパイラー
 
[Basic] 配布資料
[Basic] 配布資料[Basic] 配布資料
[Basic] 配布資料
 
Javaセキュアコーディングセミナー東京第2回講義
Javaセキュアコーディングセミナー東京第2回講義Javaセキュアコーディングセミナー東京第2回講義
Javaセキュアコーディングセミナー東京第2回講義
 
Perl勉強会#2資料
Perl勉強会#2資料Perl勉強会#2資料
Perl勉強会#2資料
 
Lisp Tutorial for Pythonista : Day 3
Lisp Tutorial for Pythonista : Day 3Lisp Tutorial for Pythonista : Day 3
Lisp Tutorial for Pythonista : Day 3
 
Synthesijer.Scala (PROSYM 2015)
Synthesijer.Scala (PROSYM 2015)Synthesijer.Scala (PROSYM 2015)
Synthesijer.Scala (PROSYM 2015)
 

業務報告会