LoginSignup
3
3

More than 5 years have passed since last update.

シェルスクリプト基本まとめ

Posted at

はじめに

演算子の種類や基本構文等、シェルスクリプトの基本的な書き方についてまとめます。

シバンの定義

シェルスクリプトの1行目にはシェルスクリプトを実行するシェル(インタプリタ)を定義します。

#!/bin/sh

その他の主なシバン

シバン インタプリタ
#!/bin/bash/ bash
#!/usr/bin/python python

シェルスクリプトの実行方法

シェルスクリプトは実行方法により必要になるパーミッションが異なります。
シバンで指定したシェルを起動してスクリプトを実行する場合は、そのスクリプトファイルに実行権が必要です。(下記の表を参照)

備考
./script.sh ・シバンで定義されたシェル(子プロセス)を起動する
・ファイルに実行権が必要
bash script.sh ・別途bash(子プロセス)を起動する(シバンを読み込まない)
・ファイルに実行権不要
. script.sh ・"source script.sh" と同様の処理
・現在のシェル(プロセス)がスクリプトを実行(シバンを読み込まない)
ファイルに実行権不要

パーミッションの追加(実行権の付与)

パーミッションの確認方法

$ ls -l script.sh
-rw-rw-r--. 1 user user 20  7月 10 15:27 script.sh

全てのユーザに実行権を付与する場合

$ chmod a+x script.sh
$ ls -l script.sh
-rwxrwxr-x. 1 user user 20  7月 10 15:27 script.sh

特殊引数

特殊引数 説明
$0 スクリプト自身のファイル名が格納される
$1-9 実行時に指定した引数が順番に格納される 
10以上の引数を指定する場合は数字を{}で括る
例:${10}
$# 引数の数が格納される
$* $0以外の引数が1つの文字列として格納される
$$ スクリプト実行時のプロセスIDが格納される
$? スクリプトの終了ステータスが格納される(正常終了:0 異常終了:1)
#!/bin/bash

echo $#
echo $0
echo $1
echo $2
echo $10 #$1までが解釈される
echo ${10}
echo $$
echo $?
echo $#
echo $*

# 実行結果
. script.sh a b c d e f g h i j k l m
13
-bash #スクリプトをパスで指定すればファイル名になる
a
b
a0
j
5601
0
13
a b c d e f g h i j k l m

配列

複数のデータを扱う

#!/bin/bash

list=("string" 10) #配列の定義

#配列の要素の取得
echo ${list[0]} #1番目の要素の表示
echo ${list[1]} #2番目の要素の表示
echo ${list[0]:1} #1番目の要素を2文字目から表示
echo ${#list[0]} #1番目の要素の文字数を表示
echo ${#list[@]} #要素数
echo ${#list[*]} #要素数

# 実行結果
$ ./script.sh
string
10
tring
6
2
2
3
3
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
3
3