クイックエントリーシェルプログラミング(二)簡単なシェルスクリプトの作成


Shellスクリプト
Python、PHPスクリプトを作成するには通常言語の関数を把握する必要がありますが、Shellスクリプトは必要ありません.Linuxコマンドを把握するだけでスクリプトを作成できます.Shellスクリプトは複数のLinuxコマンドで構成されているので、複数のLinuxコマンドを組み合わせて1つの脚本に保存することで、他の人に直接使用することができます.
コンボコマンド
ディレクトリに入り、ディレクトリのファイルを表示します.このプロセスでは、cdlsの2つのコマンドを実行する必要があります.
2つのコマンドを別々に実行する形式は次のとおりです.
[root@lincoding usr]# cd /usr/
[root@lincoding usr]#
[root@lincoding usr]# ls
bin  etc  games  include  lib  lib64  libexec  local  sbin  share  src  tmp
[root@lincoding usr]#

セミコロン;を使用して、2つのコマンドを組み合わせて順番に実行できます.では、一緒に実行する形式は次のとおりです.
[root@lincoding usr]# cd /usr/ ; ls
bin  etc  games  include  lib  lib64  libexec  local  sbin  share  src  tmp
[root@lincoding usr]#

Shellスクリプトプロセスの作成
では、この2つのコマンドがよく使われているか、他の人に提供されている場合は、この2つのコマンドをShellスクリプトファイルで保存することができます.
01 Shellスクリプトファイルの作成
bashを使用したShellは通常.shで接尾辞される
[root@lincoding home]# touch test.sh

02 Shellスクリプトの作成viコマンドでtest.shスクリプトを作成します.内容は次のとおりです.
cd /usr/
ls

注意が必要なのは、Shellスクリプトの各文の後にプラス符号;は使用されず、各コマンドは改行され、Shellスクリプトを実行するときに順番に実行されます.
03 Shellスクリプトの実行権限を与える
ファイルを作成するときは、デフォルトでは実行権限がありませんので、スクリプトの実行権限を与える必要があります.スクリプトは実行できます.
[root@lincoding home]# chmod u+x test.sh

スクリプト権限の表示
[root@lincoding home]# ls -l test.sh
-rwxr--r--. 1 root root 13 Sep 12 09:10 test.sh

04 Shellスクリプトの実行
Shellスクリプトをbashで実行すると、外部でコマンドを組み合わせて実行した結果と同じ結果になります.
[root@lincoding home]# bash test.sh
bin  etc  games  include  lib  lib64  libexec  local  sbin  share  src  tmp

Shellインタプリタの宣言
では、ここでは他の問題も考えてみましょう.このShellスクリプトを異なるシステムで実行するときに問題があると仮定します.システムのデフォルトのShellがbashではない場合、このShellスクリプトを実行すると失敗する可能性があります.bashのいくつかのShell特性がある可能性があるからです.
では、Shellスクリプトファイルの最初の行でどのShellを使用しているかを宣言することができます.フォーマットは次のとおりです.
#!/bin/bash

このように書くメリットは、Shellスクリプトを実行すると、bash解釈器のShellでスクリプトを実行することを自動的にシステムに伝えることです.
さっきのtestをshスクリプトは以下のように変更されました.
#!/bin/bash
cd /usr/
ls

では、どのShellインタプリタを使用するかを宣言すると、スクリプトを実行する方法が簡単になります.
[root@lincoding home]# ./test.sh
bin  etc  games  include  lib  lib64  libexec  local  sbin  share  src  tmp

小結
Shellスクリプトを作成するとき、最初の行は#!/bin/bashでShell解釈器を宣言し、作成が終わったらShell実行権限を与え、実行することができます.