[Linux Professional Institute公式HP]:https://www.lpi.org/ja/our-certifications/lpic-1-overview
[Udemy]:https://udemy.benesse.co.jp/career/workstyle/lpic-interview-company.html
[Udemyの動画講座]:https://www.udemy.com/course/linuxlpic/?utm_source=bene-content-marketing&utm_campaign=normal&utm_content=story&utm_term=career&utm_medium=udemyads
[Linux入門 2-3]:https://qiita.com/hoglet/items/a4854983875d6e4731fe
[Linux入門 3-1]:
はじめに
Linux初学者である自分向け用の記事です。[Udemyの動画講座]を参考にしました。
僕の勉強法は動画を見る
→実際に動かしてみる
→問題演習
という流れです。
前回まで:[Linux入門 2-3]
2. シェルスクリプト(問題、テスト、演習、発展問題)
2-9. read_onlyの使い方
値を変更できないようにするためには、readonlyを用いる。
ファイルの中身
[test@ advance]$ cat ad2.sh
#!/bin/bash
var=12
echo $var
readonly var
var=20
echo $var
実行結果
[test@ advance]$ ./ad2.sh
12
./ad2.sh: line 5: var: readonly variable
12
関数におけるreadonlyのときは、オプション-f
をつける。
ファイルの中身
[test@ advance]$ cat ad2-a.sh
#!/bin/bash
function hello(){
echo 'A'
}
hello
readonly -f hello
function hello(){
echo 'B'
}
hello
実行結果
[test@ advance]$ ./ad2-a.sh
A
./ad2-a.sh: line 9: hello: readonly function
A
2-10. PID, trapの使い方
シェルスクリプト内で以下の場合にプロセスIDを用いることがある。
・特定のプロセスを落とす
・プロセスIDをファイルに記憶する
ファイルの中身
[test@ advance]$ cat ad3.sh
#!/bin/bash
echo PID is $$
sleep 100
//実行結果
[test@ advance]$ ./ad3.sh
PID is 625
//プロセスの確認
[test@ advance]$ ps -ef | grep 625
test 625 298 0 11:40 pts/1 00:00:00 /bin/bash ./ad3.sh
test 626 625 0 11:40 pts/1 00:00:00 sleep 100
test 629 605 0 11:41 pts/2 00:00:00 grep --color=auto 625
//プロセスキル
[test@ advance]$ kill -9 625
//反映結果
[test@ advance]$ ./ad3.sh
PID is 625
Killed
trap
trapコマンドでプログラム終了時の挙動を設定します。
//プログラム終了時に実行されるコマンド
$ trap “echo exit command is detected” 0
//kill -15でのプロセス終了時に実行されるコマンド
$ trap “echo Exit “ 15
//終了時、割り込み時に実行される
$ trap “rm –f $file && echo file deleted” 0 2
1:再起動、2:割り込み(Ctrl+c)、9:強制停止(trapは設定できない)、15:プロセスの終了
ファイルの中身
[test@ advance]$ cat ad3.sh
#!/bin/bash
echo PID is $$
trap "echo process end" 0
for i in `seq 1 1 10`;
do
echo $i
done
実行結果
[test@ advance]$ ./ad3.sh
PID is 631
1
2
3
4
5
6
7
8
9
10
process end
2-11. DEBUGの方法
・デバッグモードで実行する方法(2つ)
1. $ bash –x ./hello.sh
2. ファイル内に記載
$ vi hello.sh
#!/bin/bash –x
...(省略)
ファイルの中身
[test@ advance]$ cat ad4.sh
#!/bin/bash -x
echo 'hello world'
arg=$1
echo arg: $arg
実行結果
[test@ advance]$ ./ad4.sh ABC
+ echo 'hello world'
hello world
+ arg=ABC
+ echo arg: ABC
arg: ABC
・プログラム内で動的にデバッグにするか変更する方法
ファイル内に記載する
//デバッグモード
set –x
//元に戻す
set +x
ファイルの中身
[test@ advance]$ cat ad4.sh
#!/bin/bash
echo AAA
set -x
echo BBB
set +x
echo CCC
実行結果
[test@ advance]$ ./ad4.sh
AAA
+ echo BBB
BBB
+ set +x
CCC
シェルスクリプト講義を終えて...
ここまで学べばシェルスクリプトの文法に関してはマスターしたといってもいいと思います。(動画内解説参照)
次回から、LPICの問題編に突入です!!!
Keep up the good work!
[Linux入門 3-1]