More Related Content
PDF
PDF
PDF
PDF
Introduction to Initramfs - Initramfs-tools and Dracut ODP
PDF
ODP
Sourcecode Reading Workshop2010 PDF
What's hot
KEY
PDF
KEY
PPTX
PDF
2日間Fabricを触った俺が
色々解説してみる PPTX
PDF
PDF
PDF
PDF
PDF
PDF
PDF
PDF
PPTX
PDF
PDF
KEY
PDF
PPTX
Viewers also liked
PPTX
シェルスクリプトワークショップ資料 - 上級者向け「シェル芸」 PPTX
シェルスクリプトワークショップ資料 - 初心者向け「シェル芸」 PDF
PDF
awk v.s. bashどっちが強い?@OSC2011Tokyo PDF
PDF
PDF
PDF
PPTX
20150717 gisca 自治体によるopenstreetmapの活用について PDF
第31回WebSig会議【セッション2】 タブレットが与える影響について考える PDF
日本 GNU AWK ユーザー会スライド 1 - OSC2012 Tokyo/Fall PDF
PDF
PDF
T4t - tools for teams - 第1回 発表スライド PDF
【議事録】スキルアップ勉強会(6月度) h23.07.10 ODP
PDF
ODP
会津若松市 情報化の取り組みと防災分野へのオープンデータ活用 ODP
PDF
Similar to 仕事で使えるシェルスクリプト
PPTX
Powershell勉強会 v3 (もっと新しいバージョンがあります) PPTX
Powershell勉強会 v4 (もっと新しいバージョンがあります。) PPTX
Powershell 超絶基礎 勉強会 v1 (もっと新しいバージョンがあります) PPTX
PPTX
Powershell勉強会 v2 (もっと新しいバージョンがあります) PPTX
Powershell勉強会 v5 (こちらが最新です。) PDF
PDF
Windows PowerShell 2.0 の基礎知識 PPTX
PDF
PDF
スクリプト言語入門 - シェル芸のすすめ - 第2回クラウド勉強会 PPTX
PDF
IT Pro のための PowerShell スクリプティング PDF
姫路IT系勉強会 Vol.11 第0回L-1グランプリ bash PDF
ODP
楽しい怪しいシェルスクリプト - 第4回つくらぐ勉強会 PDF
2017-12-04 Linuxの基本構造とBashでの扱い方 PDF
PDF
MAN OF BASH #ssmjp 2013.09.25 PDF
OSC2012 Tokyo Spring, USP lab. presentation Recently uploaded
PPTX
【ASW22-01】STAMP:STPAロスシナリオの発想・整理支援ツールの開発 ~astah* System Safetyによる構造化・階層化機能の実装... PDF
0.0001秒の攻防!?快適な運転を支えるリアルタイム制御と組み込みエンジニアの実践知【DENSO Tech Night 第四夜】 PDF
サーバーサイド Kotlin を社内で普及させてみた - Server-Side Kotlin Night 2025 PDF
Rin Ukai_即興旅行の誘発を目的とした口コミ情報に基づく雰囲気キーワード_EC2025.pdf PDF
Kubernetes Release Team Release Signal Role について ~Kubernetes Meetup Tokyo #72~ PDF
Nanami Doikawa_寄り道の誘発を目的とした旅行写真からのスポット印象語彙の推定に関する基礎検討_EC2025 PPTX
「グローバルワン全員経営」の実践を通じて進化し続けるファーストリテイリングのアーキテクチャ 仕事で使えるシェルスクリプト
- 1.
- 2.
- 3.
- 4.
仕事で使えるシェルスクリプト 4
なぜなぜ POSIXPOSIXかか
● 元々は Bourne Shell のみだったので互換性は問題なし
● シェルスクリプトは様々な環境で動作した
●
csh 、 tcsh 、 ksh 、 bash 、 zsh などの登場により機能は増加し
たが互換性は減少した
● ソフトウェア製品を様々なベンダーの数ある unix システムで
動作させるために互換性を意識する必要がある
- 5.
- 6.
- 7.
- 8.
仕事で使えるシェルスクリプト 8
POSIXPOSIX を気にしないを気にしない
●
OS固有の処理(起動スクリプトなど)
– redhat 系
● パラメタは /etc/sysconfig 以下にファイルを設置
● 起動スクリプトは /etc/rc.d/init.d 以下にファイルを設置
● 起動制御は chkconfig で指定
– FreeBSD
● パラメタ・起動制御は /etc/rc.conf に指定
● 起動スクリプトは /usr/local/etc/rc.d 以下にファイルを設置
- 9.
- 10.
- 11.
- 12.
仕事で使えるシェルスクリプト 12
シェル変数シェル変数 -e-e
●スクリプト実行時に制御文以外でエラーが発生
した場合に スクリプトを終了させる。
$ cat foo.sh
#!/bin/sh
set -e
files=`la ${tmpdir}`
echo "FILES: ${files}"
$ sh foo.sh
foo.sh: line 3: la: command not found
- 13.
仕事で使えるシェルスクリプト 13
シェル変数シェル変数 -x-x
●コマンドが実行される前にコマンドと変数の展
開結果を stderr に出力する。
$ cat foo.sh
#!/bin/sh
set -x
files=`ls ${tmpdir}`
echo "FILES: ${files}"
$ sh foo.sh
++ ls
+ files='bar
baz 以下略
- 14.
仕事で使えるシェルスクリプト 14
シェル変数シェル変数 -v-v
●シェルの入力行を stderr に出力する。
$ cat foo.sh
#!/bin/sh
set -v
files=`ls ${tmpdir}`
echo "FILES: ${files}"
$ sh foo.sh
files=`ls`
ls
echo "FILES: ${files}" 以下略
- 15.
仕事で使えるシェルスクリプト 15
シェル変数シェル変数 -n-n
●コマンドの実行を抑止する。文法チェックや前
述の -v と組み合わせて使用すると便利。
$ cat foo.sh
#!/bin/sh
set -vn
files=`ls ${tmpdir}`
echo "FILES: ${files}"
$ sh foo.sh
files=`ls`
echo "FILES: ${files}"
- 16.
仕事で使えるシェルスクリプト 16
シェル変数シェル変数 -u-u
●シェル変数を展開した時に値が設定されていな
い場合はエラーとする。
$ cat foo.sh
#!/bin/sh
set -u
tmpdir="/tmp"
rm -r ${tnpdir}/*
$ sh foo.sh
foo.sh: line 4: tnpdir: unbound variable
- 17.
仕事で使えるシェルスクリプト 17
変数展開変数展開
● シェルによる変数展開を活用しよう
–${parameter:-word} デフォルト値への置換
– ${parameter:=word} デフォルト値の代入
– ${parameter:?[word]} 値の検査とエラー
– ${parameter:+word} 代替値の使用
– ${#parameter} 文字列長の取得
– ${parameter%word} 最短後置パターンの削除
– ${parameter%%word} 最長後置パターンの削除
– ${parameter#word} 最短前置パターンの削除
– ${parameter##word} 最長前置パターンの削除
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
- 25.
- 26.
- 27.
仕事で使えるシェルスクリプト 27
traptrap の活用の活用
●
trap(1) で 0 を指定する
– スクリプトが正常終了した時にも指定した処理が実
行されるので、プログラム中で作成した一時ファイ
ルの削除などにはもってこい。
tmpdir="${TMP:-/tmp}/`basename ${0}`.$$"
mkdir -p "${tmpdir}"
trap 'rm -r "${tmpdir}"' 0
- 28.
- 29.
- 30.
仕事で使えるシェルスクリプト 30
setset の活用の活用
●スペース区切りのデータ解析は set を活用
date="`date '+%Y %m %d'`"
year="`echo ${date} | awk '{ print $1 }'`"
month="`echo ${date} | awk '{ print $2 }'`"
day="`echo ${date} | awk '{ print $3 }'`"
↓
set -- `date '+%Y %m %d'`
year="${1}"
month="${2}"
day="${3}"
- 31.
仕事で使えるシェルスクリプト 31
正規表現正規表現
● 正規表現の種類
–POSIX 1003.2 で定義されている
– 拡張正規表現 : egrep などモダンな実装
– 基本正規表現 : ed など旧来の実装
●
| 、 + 、 ? は存在しない
●
{ 、 } 、 ( 、 ) はそれぞれ { 、 } 、 ( 、 )
●
^ 、 $ は正規表現の先頭 / 末尾意外では普通の文字
– + 、 ? は代替の表現があるが | の代替は面倒
● シェルの glob とは異なるので注意
- 32.