Linucレベル1 102出題範囲「1.06.2 シェルスクリプト」の解説まとめ

IT資格

LinuCレベル1 102試験の出題範囲「1.06.2 シェルスクリプト」の技術的内容を解説します。

重要度6
概要簡単なBashスクリプトを新規作成できる。作成したBashスクリプトをシステムの利用者に適用できる。処理結果により動作を分岐できるスクリプトを作成できる。Linux スキルの無いユーザに規定のコマンドを実行できる環境を提供できる。シェルスクリプトの引数を処理できる。
詳細よく使用する一連のコマンド用にBashの関数を作成する。
 ・function
先頭行(#!)を利用して、適切なスクリプトインタプリタを選択する。
スクリプトの位置、所有権、実行権を管理する。
 ・chown, chmod
標準的なshの構文(ループ)を使用する。
 ・for, while
コマンドの成功または失敗を示す戻り値を使用する。または、つぎに渡すコマンドのために戻り値を指定して終了する。
 ・$?, exit
条件に応じて処理を変更する。
 ・if, case
引数に応じて処理を変更する。
 ・$#, $*, $@, $0, $1..$n, shift
使用するユーザに依存しないスクリプトを作成する。
 ・PATH
シェルスクリプトをデバッグする。
 ・bash -v, bash -x
LinuCレベル1 102試験 出題範囲 | LPI-Japan
仮想環境を含むLinuxシステムの基本操作とシステム管理が行えるエンジニアであることを認定します。試験センターの他に自宅でも受験できます。受験費用は税込16,500円。

シェルスクリプトとは

シェルに対して、プログラムのような形で一つのファイルにまとめておいてそれをシェルに実行させることができます。このときのプログラムのような形で一つにまとめたファイルのことを「シェルスクリプト」といいます。

シェルは前回取り上げた通り、「Linuxとユーザーをつなぐインターフェイスとなるソフトウェア」です。Linuxでは、シェルを通じてシステムを操作するという局面が多くなります。

ここで、定期的にシステムを監視するなど、「何度も類似の操作を繰り返して行いたい」というケースを考えます。このケースでは、シェルに対して何度も同じようなコマンドを入力することになります。これは手間がかかります。

そこでシェルには、事前に一連の操作(実行するコマンドなど)をプログラムのような形でファイルに記述しておき、そのファイルの内容を実行するという機能が備わっています。このファイルを「シェルスクリプト」と呼びます。

シェルスクリプト - Linux技術者認定 LinuC | LPI-Japan
Linuxを学習する上で出てくる素朴な疑問や、便利なテクニックなどを紹介しています。LinuCは、クラウド・DX時代に活躍するエンジニアに求められるLinuxを中心とした技術や知識を身につけることができるLinux技術者認定試験。出題範囲に...

シェルスクリプトの実行

シェルスクリプトのファイル名はシェルスクリプトの実行には影響がありません。

シェルスクリプトを実行するには、bashコマンドでシェルスクリプトを実行します。

ただし、シェルスクリプト内の先頭行に「#!/bin/bash」を記載しておけばbashコマンドでシェルスクリプトを実行しなくても、シェルスクリプトを実行することができます。#!から始まる業は、シェルスクリプトを実行するコマンドを指定しておくことができる行です。

ファイル名は、シェルスクリプトの実行方法には影響を与えません。

自作のシェルスクリプトは、以下のようにシェルのコマンドを使って実行することができます。

実行例1) $ bash testscript
実行例2) $ bash ./testscirpt
実行例3) $ bash /home/user/testscirpt

ただ、この状態では、スクリプトを実行する場合にbashコマンドを使う必要があります。またカレントディレクトリにファイルが存在しない場合は、パスを指定する必要もあります。
つまり、通常のコマンド実行に比べて不便です。

通常のコマンドの実行方法、つまり例題の実行方法と同じようにスクリプトを実行するためには、以下の手順が必要になります。

a)スクリプトの先頭行に「#!/bin/bash」を記載する

「#!」から始まる行は、シバンやシェバン(she-bang)と呼ばれる行です。この行にはスクリプトを実行するコマンドを指定します。

シェルスクリプト - Linux技術者認定 LinuC | LPI-Japan
LinuCレベル1を受験される方向けに102試験の例題と解説をご紹介しています。LinuCは、クラウド・DX時代に活躍するエンジニアに求められるLinuxを中心とした技術や知識を身につけることができるLinux技術者認定試験。出題範囲に含ま...

シェルの関数の概要

シェルの関数は以下のLinuC公式サイトに掲載されている例題の解説のように定義することができます。

まず、シェルの関数の定義と実行方法についてです。
関数は以下のように定義します。

——————————————————————————————
function 関数名() {
    実行するコマンド
}
——————————————————————————————

以下のようにfunctionや()を省略して定義することもできます。
なお、両方とも省略することはできません。

——————————————————————————————
関数名() {
    実行するコマンド
}

function 関数名 {
    実行するコマンド
}
——————————————————————————————

定義した関数は、コマンドと同じように実行できます。

シェル環境のカスタマイズと使用 - Linux技術者認定 LinuC | LPI-Japan
LinuCレベル1を受験される方向けにの例題と解説をご紹介しています。LinuCは、クラウド・DX時代に活躍するエンジニアに求められるLinuxを中心とした技術や知識を身につけることができるLinux技術者認定試験。出題範囲に含まれる技術解...

シェルスクリプトの引数

シェルスクリプト実行時の引数に関する詳細をLinuC公式サイトの例題の解説から引用します。

引数処理に使用する変数は以下の通りです。

$#実行時に指定された引数の数を表す変数
$@スクリプト実行時に指定された全引数が格納される変数(引数ひとつひとつが””で囲まれる形式)
$*スクリプト実行時に指定された全引数が格納される変数(引数のすべてが””で囲まれる形式)
$0実行時のスクリプト名が格納される変数
$[1-n]スクリプト実行時に指定した引数の値がそれぞれ格納される変数
シェルスクリプト - Linux技術者認定 LinuC | LPI-Japan
LinuCレベル1を受験される方向けに102試験の例題と解説をご紹介しています。LinuCは、クラウド・DX時代に活躍するエンジニアに求められるLinuxを中心とした技術や知識を身につけることができるLinux技術者認定試験。出題範囲に含ま...

$#の実行例

echoコマンドは、オプションに指定されたテキストを出力するコマンドです。echoコマンドのおプ本に$#を指定すると、引数に指定しているものの数が出力できます。

例1)script1.sh
ーー
#!/bin/bash
echo $#
ーー

$ script1.sh one two three
3

$# を表示すると、引数の数が表示されます。

試しtest.shファイルを作成して実行してみました。

[root@RHEL96 ~]# bash test.sh one two
2
[root@RHEL96 ~]#
[root@RHEL96 ~]#
[root@RHEL96 ~]# bash test.sh one
1
[root@RHEL96 ~]#

$*の実行例

例2)script2.sh
ーー
#!/bin/bash
echo $*
ーー

$ script2.sh one two three
one two three

$* を表示すると、すべての引数が表示されます。

$@の実行例

$0の実行例

の実行例

例3)script3.sh
ーー
#!/bin/bash
echo $0
ーー

$ script3.sh one two three
script3.sh

$0 を表示すると、実行したスクリプト名が表示されます。

$[1-n][1-n]の実行例

タイトルとURLをコピーしました