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