シェルスクリプト
シェルスクリプトの基本
拡張子.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
実行例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/