logo

Bash スクリプト – Bash と Bash スクリプトの概要

Bash はコマンドライン インタプリタまたは Unix シェルであり、GNU/Linux オペレーティング システムで広く使用されています。ブライアン・ジャン・フォックスが書いた作品です。これは、ほとんどの Linux ディストリビューションのデフォルトのログイン シェルとして使用されます。スクリプトを使用してタスクの実行を自動化し、人間がタスクを個別に実行する必要がなくなります。 Bash スクリプトは、システム内のさまざまな種類のタスクを自動化する優れた方法です。開発者は、bash スクリプトを使用して反復的なタスクの実行を回避できます。

Bash スクリプトは、プログラミング言語と同様に、変数、条件ステートメント、ループをサポートしています。以下は Bash スクリプトのアプリケーションの一部です。



10mlをオンスに

目次

Bash スクリプトのアプリケーション:

  • ファイルの操作
  • バックアップ操作などの日常的なタスクの実行
  • オートメーション

Bash スクリプトを使用する利点は次のとおりです。

Bash スクリプトの利点:

  • それは単純だ。
  • 繰り返しの作業を避けるのに役立ちます
  • 使いやすい
  • 頻繁に実行するタスクを自動化できる
  • 一連のコマンドを 1 つのコマンドとして実行できます。

Bash スクリプトの欠点を以下に示します。



Bash スクリプトの欠点:

  • 書き込み中に何らかの間違いが発生すると、損害が発生する可能性があります。
  • 実行されるほぼすべてのシェルコマンドに対して新しいプロセスが起動される
  • 実行速度が遅い
  • 異なるプラットフォーム間の互換性の問題

Bash スクリプトの書き方

Bash スクリプトを作成するには、次の手順に従います。

  • まず、拡張子が .sh のファイルを作成します。
  • 次に、その中にある bash スクリプトを書き留めます。
  • その後、実行許可を与えます。

.sh 拡張子を持つファイルを作成して書き込むには、次のコマンドを使用できます。 ゲディット テキストエディタ。そのコマンドは次のようになります –

gedit scriptname.sh>

スクリプト ファイルの最初の行は次のようになります –



#!/bin/bash>

これにより、システムは実行に Bash を使用するようになります。その後、独自のスクリプトを作成できます。

ターミナルに数行を出力する簡単なスクリプトを書き留めてみましょう。そのコードは次のようになります –

#!/bin/bash echo 'Hello, techcodeview.com'>

次に、ファイルを保存し、そのファイルに実行権限を与えます。これを行うには、次のコマンドを使用します。

chmod +x scriptname.sh>

次に、次のスクリプトを実行するには、次のコマンドを使用します。

./scriptname.sh>

上記のコマンドを次のように実行した後のターミナル シェルの図を次に示します。

ここでは、スクリプト ファイル名は gfg.sh です。

Bash スクリプトを使用して、より複雑なコマンドを作成できるようになりました。以下に条件ステートメントを使用する例を示します。

スクリプトの例:

#!/bin/bash Age=17 if [ '$Age' -ge 18 ]; then echo 'You can vote' else echo 'You cannot vote' fi>

出力:

You cannot vote>

上記のスクリプトを次のように実行した後のターミナル シェルの図を次に示します。

上記の方法で、複数の Bash コマンドを一度に実行できます。

次に、Bash スクリプトに関連する他の重要な概念を見てみましょう。

ファイル名と権限

上の例では、次を使用してファイルを保存しました。 gfg.sh 名前を指定し、次を使用して実行権限も提供されます。 chmod 指示。では、なぜそのようなことをしたのかを理解しましょう。

bash スクリプトを作成するときは、Linux システムが実行できるように、ファイルに .sh 拡張子を付けて保存する必要があります。拡張子 .sh を持つファイルを最初に作成したとき、そのファイルには実行権限がなく、実行権限がなければスクリプトは機能しません。したがって、次のコマンドを使用して実行権限を付与する必要があります。 chmod 指示。

bash スクリプトのファイル名は何でも構いませんが、慣例により、スクリプト ファイルの名前にはスネークケース ( my_bash_script.sh ) またはハイフン ( my-bash-script.sh ) を使用することをお勧めします。

変数

bash スクリプトでは変数を使用できます。以下は、Bash スクリプトでの変数の使用法を理解するためのサンプル プログラムです。

スクリプトの例:

Name='SATYAJIT GHOSH' Age=20 echo 'The name is $Name and Age is $Age'>

変数の出力:

The name is SATYAJIT GHOSH and Age is 20>

したがって、ここでは 2 つの変数を宣言しています 名前 そしてもう一つは 年。 これらの変数には、$Name と $Age を使用してアクセスできます。つまり、次を使用して bash スクリプトで変数を宣言できます。 変数名=値 を使用してアクセスできます $変数名。 上記のスクリプトを次のように実行した後のターミナル シェルの図を次に示します。

Bash スクリプト内には 2 種類の変数が存在します。従来、変数が関数内で宣言されている場合、それは一般的に ローカル変数 そしてそれが外部で宣言された場合、それは グローバル変数 。 bash スクリプトの場合、この概念は少し異なります。ここでは、変数が関数内に記述されているか、関数外に記述されているかに関係なく、デフォルトでグローバル変数になります。ローカル変数を作成したい場合は、キーワード local を使用する必要があります。

注記: 不要な混乱を避けるために、関数内では常にローカル変数を使用することがベスト プラクティスです。

同じ例を以下に示します。

スクリプトの例:

#!/bin/bash var1='Apple' #global variable myfun(){ local var2='Banana' #local variable var3='Cherry' #global variable echo 'The name of first fruit is $var1' echo 'The name of second fruit is $var2' } myfun #calling function echo 'The name of first fruit is $var1' #trying to access local variable echo 'The name of second fruit is $var2' echo 'The name of third fruit is $var3'>

ローカル変数とグローバル変数の出力:

The name of first fruit is Apple The name of second fruit is Banana The name of first fruit is Apple The name of second fruit is The name of third fruit is Cherry>

上記の例では、var2 はローカル変数であるため、関数からアクセスしているときは正常に動作していますが、関数の外からアクセスしようとすると、出力に空の結果が返されます。

一方、プログラミング言語とは異なり、var3 は関数内で定義されているにもかかわらず、グローバル変数として機能し、関数の外部からアクセスできます。以下は、スクリプト実行後のターミナル シェルの図です。

入出力

入力と出力は、シェル スクリプトの基本的な概念です。スクリプトは 1 つ以上の入力を受け取り、ゼロまたは多数の出力を生成することもできます。多少の誤差が生じる場合もあります。これを例で理解してみましょう –

スクリプトの例:

echo 'Enter filename' read filename if [ -e $filename ] then echo '$filename is exits on the directory' cat $filename else cat>$filename echo 'ファイルが作成されました' fi>>' 

入力と出力の出力:

初めて:

2回目:

Enter filename geeks.txt geeks.txt is exits on the directory Hello Geek>

したがって、上記の例では、初めてスクリプトはそのファイル名のファイルを見つけることができず、else ブロックが実行されます。ファイルを作成し、そのファイルにデータを挿入しました。同じファイル名でもう一度実行すると、そのファイルが見つかります。つまり、if ブロックが実行され、ファイルの内容が表示されます。ファイルの内容の読み取りが入力となり、初めてファイルにデータを入れると出力とみなされます。ここで使用したのは、 > コンテンツをファイルに保存します。の > リダイレクトには表記が使用されます 標準出力 ファイルに。一方、次のように使用できます。 2> 標準エラー出力をリダイレクトするための表記、および &> stdout と stderr の両方をリダイレクトします。

以下は、次のスクリプトを実行した後のターミナル シェルの図です。

機能

プログラミングでは、関数はいくつかのタスクを実行するコードのブロックであり、タスクを実行するために複数回呼び出すことができます。 Bash スクリプトでの関数の使用の最も単純な例は次のようになります。

スクリプトの例:

#!/bin/bash #It is a function myFunction () { echo Hello World from techcodeview.com } #function call myFunction>

関数の出力:

Hello World from techcodeview.com>

上の例は、呼び出されたときに何かを出力する関数を示しています。

したがって、Bash スクリプト内で関数を記述するための基本的な構文は次のようになります。

関数の構文:

#for defining function_name(){ commands ..... } function_name # for calling>

これに加えて、引数と戻り値を渡す関数を使用することもできます。

意思決定

プログラミングにおいて、意思決定は重要な概念の 1 つです。プログラマは、コードのブロックを実行するための 1 つ以上の条件を提供します。条件が満たされる場合、それらのコード ブロックのみが実行されます。

シェル スクリプト内では 2 種類の意思決定ステートメントが使用されます。彼らです -

1. If-else ステートメント:

If else ステートメントは条件ステートメントです。これを使用すると、指定された条件が満たされるかどうかに基づいて 2 つの異なるコードを実行できます。

if-else ステートメントにはいくつかの種類があります。彼らです -

  • もしそうだったら
  • if-else-fi
  • if-elif-else-fi
  • ネストされた if-else

最も単純な構文は次のようになります。

SQL複数テーブル選択

If-else ステートメントの構文:

if [ expression ]; then statements fi>

スクリプトの例:

Name='Satyajit' if [ '$Name' = 'Satyajit' ]; then echo 'His name is Satyajit. It is true.' fi>

if-else ステートメントの出力:

His name is Satyajit. It is true.>

上記の例では、条件チェック中に名前が一致し、条件が true になります。したがって、if ブロック内に存在するコードのブロックが実行されます。名前が一致しない場合、出力はありません。以下は、次のスクリプトを実行した後のターミナル シェルの図です。

2. case-sac ステートメント:

case-sac は基本的にプログラミングにおける switch ステートメントと同じように動作します。複数の条件をチェックする必要がある場合、if ステートメントを使用すると複雑になることがあります。そのようなときは、case-sac ステートメントを使用できます。構文は次のようになります –

case-sac ステートメントの構文:

case $var in Pattern 1) Statement 1;; Pattern n) Statement n;; esac>

スクリプトの例:

Name='Satyajit' case '$Name' in #case 1 'Rajib') echo 'Profession : Software Engineer' ;; #case 2 'Vikas') echo 'Profession : Web Developer' ;; #case 3 'Satyajit') echo 'Profession : Technical Content Writer' ;; esac>

case-sac ステートメントの出力:

Profession : Technical Content Writer>

上記の例では、case-sac ステートメントは、一致したパターン (ここでは「名前」) の一部であるステートメントを実行しました。以下は、次のスクリプトを実行した後のターミナル シェルの図です。

文字列と数値の比較

文字列の比較は、シェル スクリプトで文字列内でも比較を行うことで決定を下せることを意味します。すべての演算子を説明した表は次のとおりです。

オペレーター 説明
== 文字列が等しい場合は true を返します
!= 文字列が等しくない場合は true を返します
-n テスト対象の文字列が null でない場合は true を返します
-と テストされる文字列が null の場合は true を返します

算術演算子は、算術ベースの条件をチェックするために使用されます。 「未満」、「より大きい」、「等しい」などです。すべての演算子を説明した表を次に示します。

オペレーター 説明
-eq 等しい
-ge 以上
-gt より大きい
-その 以下
-lt 未満
- は 等しくない

以下は同じ簡単な例です。

スクリプトの例:

if [ 10 -eq 10 ];then echo 'Equal' fi if [ 'Geeks' == 'Geeks' ]; then echo 'same' #output else echo 'not same' fi>

文字列と数値の比較の出力:

Equal same>

この例では、最初の 1 つ (-eq ) は、等しいかどうかをチェックする数値比較です。 2 番目の ( == ) も等価性をチェックしますが、文字列内で行われます。以下は、次のスクリプトを実行した後のターミナル シェルの図です。

この概念については、次の記事で詳しく説明します。

結論

この記事では、Linux 環境内でタスクを自動化する上で重要な役割を果たす Bash スクリプトについて説明します。コマンドライン インタープリタとしての Bash は、開発者が日常的な操作を合理化し、ファイルを操作し、複雑なタスクを実行するスクリプトを作成するためのシンプルさと使いやすさを提供します。 Bash スクリプトは、反復的なアクションを回避し、一連のコマンドを効率的に実行することで生産性を向上させることができますが、権限の管理、変数の処理、意思決定構造の実装などの考慮事項も伴います。 Bash スクリプトを習得することで、ユーザーはその能力を活用してワークフローを最適化し、Linux プラットフォームでのシステム管理タスクを強化できます。