目次

シェルスクリプト

シェルスクリプトの基本

拡張子.shでファイルを作成

vi test.sh

ファイルにシェルスクリプトを書く

test.sh
#!/bin/sh
 
echo "Hello World"

1行目の#!/bin/shは、このファイルはシェルスクリプトですという宣言。

#!シェバンと読む。

CentOSでは、/bin/sh/bin/bashへのシンボリックリンクになっている。

シェルスクリプトを実行

sh test.sh

sh ファイル名でシェルスクリプトを実行。

実行結果
Hello World

画面にHello Worldと表示される。

バッククォート

`(バッククォート)で囲んだ部分は、コマンドとして実行され、結果が出力される。

test.sh
#!/bin/sh
 
echo `date`
sh test.sh
実行結果
2021年 7月 2日 金曜日 20:52:59 JST

シェルの変数

test.sh
#!/bin/sh
 
DATE=`date "+%Y_%m%d"`
echo $DATE

変数=値で変数に値をセットする。

=の左右にスペースを入れてはならない。

$変数で変数の値を利用できる。

sh test.sh
実行結果
2021_0702

シェルスクリプトのファイル名を取得する方法

test.sh
#!/bin/sh
 
echo $0

$0という特殊変数の中にファイル名が格納されている。


sh test.sh
実行結果
tesh.sh

シェルスクリプトのディレクトリ名を取得する方法(相対パス)

test.sh
#!/bin/sh
 
DIR_SCRIPT=`dirname $0`
echo $DIR_SCRIPT

実行例1

sh test.sh
実行結果
.

実行例2

sh /home/user1/test.sh
実行結果
/home/user1

shコマンドをを実行するときのファイル指定の仕方で結果が変わる。

シェルスクリプトのディレクトリ名を取得する方法(絶対パス)

test.sh
#!/bin/sh
 
DIR_SCRIPT=$(cd $(dirname $0); pwd)
echo $DIR_SCRIPT

cdでファイルのあるディレクトリへ移動、pwdでディレクトリの絶対パスを取得。

$()の中にコマンドを書くと、実行結果を変数として利用できる。

$()の中では、;で区切ると複数のコマンドを実行できる。


sh test.sh
実行結果
/home/user1/