LoginSignup
2
2

More than 5 years have passed since last update.

ドットインストールのシェルスクリプト入門視聴メモ(#01~#09)

Last updated at Posted at 2015-06-25

はじめに

ドットインストールのシェルスクリプト入門を見たので、その視聴メモをまとめておきたいと思います。
この記事は、前半(#01~#09)のまとめです。

シェルスクリプト入門 (全18回) - ドットインストール
http://dotinstall.com/lessons/basic_shellscript

#01 シェルスクリプトとはなにか?

特に気になるところなし。

#02 はじめてのシェルスクリプト

1行目に実行するシェルを指定する

/bin/bash で実行する場合、1行目に下記のように書く。

#!/bin/bash

ファイルのアクセス権限を変更する

シェルスクリプトを実行するためにファイルに実行権限を与える。
hoge.shの所有者、グループ、その他のユーザの権限をそれぞれ、rwx r-- r--にする場合、下記のようにchmodコマンドを実行する。
(所有者は読み出し書き込み実行権限、グループとその他のユーザには読み出しのみの権限を許可する場合)

$ chmod 744 hoge.sh

#03 変数を使ってみよう

変数の使い方

  • 変数に代入するとき = の前後にスペースを入れない
  • ''(シングルクォート) で括ると変数が展開されない
hoge.sh
# =の前後にスペースを入れない
S="hoge"
echo $s
echo "$s"
# シングルクォートで括ると展開されない
echo '$s'

実行結果

$ ./hoge.sh
hoge
hoge
$s

#04 数値演算をしてみよう

数値演算の仕方

  • 数値演算を行う時は ``(バッククォート) で括る
  • 数値演算をを行う時は expr を使う
  • 記号の前後にはスペースを入れる
hoge.sh
x=10
# バッククォートで括ると計算する
# 記号の前後にはスペースを入れる
echo `expr $x + 2`

実行結果

$ ./hoge.sh
12

#05 四則演算をしてみよう

掛け算の仕方

  • 掛け算する時は *(アスタリスク) を *\*(バックスラッシュ) でエスケープする
  • 計算の順序の ()(括弧) も\でエスケープする
hoge.sh
x=10
# 掛け算は*を\でエスケープする
# $x × 2
echo `expr $s \* 2`

# 括弧も\でエスケープする
# ( $x + 5 ) × 2
echo `expr ¥( \x + 5 \) \* 2`

実行結果

$ ./hoge.sh
20
30

#06 配列を使ってみよう (1)

配列へのアクセス

  • 配列で添字を使用する場合は {}(波括弧)で括る
  • $array で先頭の要素
  • ${array[@]} で全ての要素
  • ${array#[@]} で要素数
hoge.sh
#配列
a=(2 4 6)

# 先頭の要素
echo $a
# 添字を使用する場合は{}で括る
echo ${a[1]}

#全ての要素
echo ${a[@]}
# 要素数
echo ${#a[@]}

# {}で括るのを忘れると、$aが評価されて「2[1]」 となってしまう
echo $a[1]

実行結果

$ ./hoge.sh
2
4
2 4 6
3
2[1]

#07 配列を使ってみよう (2)

配列への代入と要素の追加

  • 配列への代入時は{}で括る必要はない
  • 配列の要素の追加は array+=(hoge foo) とする
hoge.sh
#配列
a=(2 4 6)

# 配列への代入時は{}で括る必要はない
a[2]=10
echo ${a[@]}

# 配列の要素の追加
a+=(20 30)
echo ${a[@]}

実行結果

$ ./hoge.sh
2 4 10
2 4 10 20 30

``(バッククォート) で括ると実行結果を返す。

この場合は、dateコマンドの結果を配列に格納する。

``で括ると実行結果を返す

  • ``(バッククォート) で括ると実行結果を返す
hoge.sh
# ``で括ると実行結果を返す
d=(`date`)
echo ${d[0]}

実行結果

$./hoge.sh
2015年

参考

dateコマンドは日付時刻を表示する。

$ date
2015年 6月25日 木曜日 23時00分00秒 JST

#08 条件式を評価してみよう (1)

条件式について

  • $? は、直前の条件式の評価の戻り値(真なら0,偽なら1)が格納されている
  • -eq は等しいかどうか(equal)
hoge.sh

# 条件式の評価
# 数値の評価
# 1 = 2
test 1 -eq 2; echo $?
# 1 = 1
test 1 -eq 1; echo $?

実行結果

$ ./hoge.sh
1
0

色々な条件式

  • -eq : 等しいか(equal)
  • -ne : 等しくないか(not equal)
  • -gt : 大きい(greater than)
  • -ge : 以上(greater than or equal)
  • -lt : 小さい(less tahn)
  • -le : 以下(less than or equal)

#09 条件式を評価してみよう (2)

文字列の条件式

  • = : 等しいか
  • != : 等しくないか

ファイル(ディレクトリ)の条件式

  • -nt : 新しいか(newer than)
  • -ot : 古いか(older than)
  • -e : 存在するか(exist)
  • -d : ディレクトリか(directory)

論理演算子

  • -a : and
  • -o : or
  • ! : not

hoge.sh
# ファイルの条件式
# カレントディレクトリにhoge.shが存在するかどうか
test -e hoge.sh; echo $?

#論理演算子
# 1は1と同じでかつ2は2と同じか
# (1 = 1) and (2=2)
test 1 -eq 1 -a 2 -eq 2; echo $?

実行結果

$ ./hoge.sh
0
0
2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2