GNU/Linux >> Linux の 問題 >  >> Linux

初心者向けのBashスクリプティングチュートリアル

Linuxシステムを使い始めている場合は、「シェルスクリプト」などの用語を使用します。 または「Bashスクリプト 」は非常に一般的です–しかし、それらはどういう意味ですか?詳細に入る前に、Bashスクリプトを学習すると、さまざまなシステムタスクの実行と実行にかかる時間を節約し、Linuxコマンドライン(ターミナル)をよりよく理解し、複数のシステムタスクを自動化するのに役立ちます。

Bashとは何ですか?

「Bourne-Again-Shell」の頭字語であるBash GNUオペレーティングシステム用のUnixシェルまたはコマンド言語インタプリタです。これは、macOSCatalina以前のLinuxディストリビューションおよびApplemacOSリリースのメインシェルでした。 Bashは、Linux用のWindowsサブシステムを介してWindows10でも使用できます。

Bashは通常、ターミナルと呼ばれるテキストウィンドウで実行され、ユーザーはコマンドを入力してさまざまなタスクを実行します。 Bashは、ファイルに書き込まれたコマンドを実行することもできます。これは、「bashスクリプト」と呼ばれる方法です。

Bashスクリプトとシェルスクリプトの違い

シェルスクリプトとBashスクリプトは同じものではありません。 Bashスクリプトでは、bashシェルを明示的に使用しています。一方、Bash以外のシェルも利用できるため、シェルスクリプトは非常に広義の言葉になります。最も一般的なものには、Korn(ksh)、Cシェル(csh)、Zシェル(zsh)、およびBashシェル(sh)が含まれます。ただし、bashスクリプトとシェルスクリプトを同じ意味で同じ意味で使用している人を見つけても驚くことではありません。 Linux用のトップ6オープンソースシェルに関する投稿では、これらのシェルについて詳しく説明しています。

この投稿では、Bashスクリプトについて説明します。デフォルトでは、利用可能な多くのLinuxディストリビューションはBashシェルを利用しています。初心者向けの6つの最高のLinuxディストリビューションに関する投稿をチェックしてください。現在のLinuxディストリビューションで使用しているシェルを確認するには、ターミナルでコマンドを実行します。

echo $SHELL

上の画像から、私のシステムのデフォルトのインタープリターがbashであることがわかります。現在、Ubuntu20.04LTSを実行しています。飛び込みましょう!

Bashスクリプトについて

Bashスクリプトは、さまざまなタスクを実行するために実行されるbashコマンドを含むテキストファイルです。これらのスクリプトを作成するには、gedit、leaf pad、vim、nanoなどの単純なテキストエディターのみが必要です。スクリプトは.shで保存することを忘れないでください 拡張機能であり、リッチテキストではなくプレーンテキストとして。スクリプトの作成に使用する私のお気に入りのエディターの1つは、nanoエディターです。

名前の付け方、権限の割り当て、Bashスクリプトの実行

上で説明したように、bashスクリプトには必ず.sh拡張子を使用してください。たとえば、fosslinux_backup.shという名前のスクリプトを作成できます。 。ただし、スクリプトの命名には注意が必要です。たとえば、ほとんどの人は、ほとんどのスクリプトを「テスト」として保存することを好みます。ほとんどの人には知られていませんが、ファイルの種類をチェックして値を比較するtestというUnixの組み込みコマンドがあります。 whichコマンドを使用して、スクリプトと同じ名前のプログラムがあるかどうかを確認し、プログラムの競合を防ぐことができます。

which [command]
e.g
which test

上記の出力から、testはすでに組み込みコマンドであることがわかります。したがって、プログラム間の競合を避けるために、スクリプトに「test」という名前を付けません。

すべてのユーザーがスクリプトを実行できるようにするには、次のコマンドを使用します。

chmod +x [script.sh]

現在のユーザーがスクリプトを実行できるようにするには、次のコマンドを使用します。

chmod u+x [script.sh]

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

./[script_name]

上記の方法では、cdを使用する必要があることがわかります。 スクリプトを含むディレクトリに移動するか、スクリプトへのパスを渡すコマンド。ただし、これには回避策があります。スクリプトをbin に保存します ホームディレクトリにあるディレクトリ。

最近のアップデートでは、ほとんどのディストリビューションにbinが付属していません デフォルトではフォルダ。したがって、手動で作成する必要があります。このフォルダにスクリプトを配置することで、cdを使用せずに、ターミナルでスクリプトの名前を入力してスクリプトを実行できます。 および./ コマンド。

Bashスクリプトのガイドライン

最初のスクリプトを作成する前に、スクリプトを作成するときに理解する必要のあるガイドラインがいくつかあります。

  • すべてのスクリプトは「#!/ bin/bash」という行で始まる必要があります。
  • すべてのコマンドを新しい行に配置します。
  • すべてのコメントは#で始まります シンボル。
  • コマンドは()で囲まれています ブラケット。

#!/bin/bash (Hash-Bang Hack)ステートメントは、使用するシェルへのパスです。別のシェルを使用している場合は、このパスを編集する必要があります。すべてのコメントは#で始まることを理解しています シンボル。ただし、その後に(!)が続く場合 Hash-Bang Hackのマークを付けると、この行が指すシェルでスクリプトが強制的に実行されます。私たちの場合、それはBashシェルです。

最初のBashスクリプト

ほとんどのプログラミング言語と同様に、「HelloWorld」を出力するスクリプトを作成します。 実行時のステートメント。お気に入りのテキストエディタを開き、以下のコマンドを貼り付けます。テキストファイルをfossHelloWorld.shとして保存します または、組み込みコマンドではないその他の名前。

#!/bin/bash
#This script will print 'Hello World' on the Terminal
echo "Hello World"

ファイルを保存したら、次のコマンドを実行して実行可能にします。

chmod +x fossHelloWorld.sh

次に、以下のコマンドで実行します:

./fossHelloWorld.sh

上記のスクリプトは3行しかありません。 1つ目は前述のハッシュバンハック、2つ目はコメント、3つ目は実行されるコマンドです。コメントは実行されないことに注意してください。

利用できる他のbashスクリプト機能を見てみましょう。

エコーコマンド

Echoコマンドは、Linuxコマンドラインまたはターミナルで出力を出力するために使用されます。あなたが開発者であり、以前にPHPを使用したことがある場合は、このコマンドにも出くわしたことがあるはずです。このコマンドがどのように機能するかを示すために、小さなbashスクリプトを書いてみましょう。

#!/bin/bash
#Let's print the first line
echo "This is Fosslinux.com - With a new line"
#Let's print the Second statement without a new line
echo -n "This is Fosslinux - No new Line"

スクリプトを保存し、必要な権限を割り当てて実行します。

コードを理解するために、最初のechoコマンドはステートメントを出力して次の行に進みます。 2番目のechoコマンドには-nがあります スクリプトが次の行に移動しないようにする引数。以下に示すように、Echoコマンドでは、変数など、他の多くのオプションを使用できます。

変数

変数は、プログラミング言語の一般的で必要な部分です。 Bash変数はいくつかの方法で宣言できます。変数に値を割り当てる場合、記号を使用する必要はありません。ただし、変数の値を呼び出すときは、$を使用する必要があります 変数の先頭に署名します。

ターミナルで、またはスクリプトとして変数を使用できます。ターミナルで以下のコマンドを実行します。

myWebsite = "Fosslinux.com"
echo $myWebsite

次に、ユーザーから2つの入力を受け取り、それらを変数$xに格納するbashスクリプトを作成しましょう。 および$y 。次に、スクリプトは2つの値が等しいかどうかを確認します。

#!/bin/bash
echo "Enter the first number"
read a
echo "Enter the second number"
read b
if [[ $a -eq $b ]]
then
echo "Numbers are equal"
else
echo "Numbers are not equal"
fi

スクリプトを保存して実行します。下の画像から、さまざまな値を入力したことがわかります。スクリプトは、それらが等しいかどうかを確認できました。

それでは、コードを詳しく見てみましょう。最初の2つのechoステートメントは、ユーザーに1番目と2番目の数字の入力を求めるプロンプトを表示します。 read コマンドは、ユーザーが数値を入力して指定された変数に格納するのを待ちます。私たちの場合、それはa およびb 。次に、2つの値が等しいかどうかをチェックするifステートメントがあります。

条件文

どのプログラミング言語でも、条件文はプログラムの流れを制御します。コードの一部は、特定の条件が満たされた場合にのみ実行されます。最も一般的な条件ステートメントには、「if-then-else」と「case」が含まれます。以下は、if-then-elseステートメントの基本的な構文です。

if [[ condition ]]
then
<execute an instruction>
else
<execute another instruction/command>
fi

以下のスクリプトを見てください。このスクリプトは、「if-then-else」条件ステートメントを使用しています。

#!/bin/bash
echo "Enter Your Age"
read age
if ((age > 18 ))
then
echo "You can go to the party"
else
echo "You are not eligible to go to the party"
fi

上記のスクリプトを見てみましょう。 echoがあります ユーザーに年齢番号の入力を求めるステートメント。 read ステートメントは、入力された年齢を変数「age」に格納します。次に、ユーザーに指示する前に、年齢が18歳を超えているかどうかを確認するif-then-else条件ステートメントがあります。

ループ

ループは、コードを複数回実行する場合によく使用されます。たとえば、「Welcome to Fosslinux」というステートメントの1000行をエコーし​​たい場合、1000のechoステートメントが必要になります。ただし、ループの場合、必要なのは、ステートメントをターミナルにエコーまたは出力する回数を指定することだけです。 Bashは3種類のループをサポートしています。 Forループ、Whileループ、およびUntilループ。それぞれを見てみましょう。

  • Forループ

Forループは、指定されたデータまたは配列のリストを反復処理するために使用されます。以下は、BashForLoopの基本的な構文です。

for Value in 1 2 3 4 5 .. N
do
instruction1
instruction2
instruction-N
done

または、

for VALUE in file1 file2 file3
do
instruction1 on $VALUE
instruction2
instruction-N
done

以下のスクリプトを見てください。指定された曜日を繰り返し、ターミナルに1行ずつ印刷します。

#Read a weekday name in each iteration of the loop
for day in Monday Tuesday Wednesday Thursday Friday Saturday Sunday
do
echo "$day"
done

スクリプトをForLoop.shとして保存しましょう そしてそれを実行します。以下は出力のスクリーンショットです。

これは、Forループでできることの簡単な例にすぎません。条件付きステートメントと組み合わせて、特定のタスクを完了することもできます。

  • Whileループ

Whileループは、特定の条件がTrueのままで、特定のタスクを実行します。すべての反復で、ループは命令を実行する前にまず条件をチェックします。条件がFalseの場合、ループは終了します。 bashのWhileループの基本的な構文は次のとおりです。

while [CONDITION]
do
[COMMANDS]
done

たとえば、ステートメント“ Welcome to FOSSLINUX.COM”を出力するスクリプトを作成できます。 変数Xが20に設定されるまで20回。実際にそれを実装してみましょう。以下のスクリプトをご覧ください。

#!/bin/bash
x=1
while [ $x -le 20 ]
do
echo "Welcome to FOSSLINUX.COM"
x=$(( $x + 1 ))
done

スクリプトをWhileLoop.shとして保存しましょう そしてそれを実行します。以下は出力のスクリーンショットです。

上記のWhileループスクリプトを見てみましょう。最初に変数Xを宣言して値1を指定します。次に、Xが20未満のときに「Welcometo FOSSLINUX.COM」というステートメントを出力するWhileステートメントを作成します。最後に、反復ごとにXを1ずつインクリメントします。

>
  • までループ

Bash untilループは、設定された条件がfalseと評価される限り、一連の命令またはコマンドを実行するために使用されます。以下は、Untilループの基本的な構文です。

until [CONDITION]
do
[INSTARUCTIONS/COMMANDS]
done

Whileループと同様に、Untilループは、命令またはコマンドを実行する前に、最初に設定された条件を評価します。条件がfalseと評価された場合、命令が実行されます。条件がtrueと評価されると、ループは終了します。以下の例を見てください。

#!/bin/bash
count=0
until [ $count -gt 5 ]
do
echo Counter: $count
((count++))
done

上記のスクリプトを保存して実行すると、次の出力が得られます。

上記のスクリプトは、最初に変数カウントを作成し、それをzero(0)に設定します。それが私たちのプログラムの流れを制御する条件です。までループは、カウント値が5より大きいかどうかをチェックします。そうでない場合は、渡された命令を出力します。ただし、値が5より大きい場合、ループはすぐに終了します。最後に、カウント値を1(count ++)インクリメントします。

Bash関数

プログラミングとスクリプトでは、関数は特定のタスクを実行するために必要な再利用可能なコードを保持するために使用されます。したがって、スクリプトのさまざまな部分で実行する同様のコマンドがある場合は、これらのコマンドを繰り返し記述する必要はありません。それらを関数で囲み、代わりに関数を実行します。
以下は、Bash関数の基本的な構文です。

function_name () {
<instructions/commands>
}

または、

function function_name {
<instructions/commands>
}

関数を利用した簡単なスクリプトを作成しましょう。まず、「myFunction」という関数を作成します。この関数を呼び出すと、「Hello Iamthefirstfunction」というステートメントが出力されます。 2番目の関数「myCities」は、渡された引数を受け取るため、少し高度です。引数は、関数名を呼び出した後に与えられます。関数内で$1としてアクセスできます。

#!/bin/bash
myFunction () {
echo "Hello I am the first function"
echo "Hello I am the first function"
echo
}

echo "This is the second function"
function myCities () {
echo Hello $1
}
myFunction
myCities Washington,D.C
myCities Phoenix

スクリプトを保存して実行すると、以下の出力が得られます。

Bashメニュー

高度なタスクを実行するスクリプトを作成する場合、ユーザーがターミナルに表示されるいくつかのオプションから1つのオプションを選択する必要がある場合があります。これを実現するために、bash selectを使用します コマンド。

これは、ユーザーにリストからお気に入りのLinuxディストリビューションを選択するように促す簡単なメニュースクリプトを作成します。以下のスクリプトをご覧ください。

#!/bin/bash

#Print message for the user
echo "Select your favorite Linux Distribution"
select distro in Ubuntu Fedora OpenSUSE DeepIN Parrot ArchLinux Kali
do
#Print the selected value
if [[ $distro == "Exit" ]]
then
exit 0
else
echo "Selected Linux distribution is $distro"
fi
done

スクリプトをmenu.shとして保存して実行しましょう。以下の出力が得られます。

上記のスクリプトでは、ユーザーが1つを選択する7つのLinuxディストリビューションのリストがあります。選択すると、変数distroに保存されます。 その後、文字列「選択されたLinuxディストリビューションは」と連結して印刷します。 Bash選択メニューは、特に複数のスクリプトが異なるタスクを実行していて、実行したいスクリプトを選択する必要がある場合に非常に便利です。

算術

すべてのプログラミング言語は算術演算の実行をサポートしており、bashスクリプトも例外ではありません。ただし、算術演算の実行方法は少し異なります。以下は、bashで算術演算を実行する方法の1つです。合計、除算、乗算の4種類の算術演算を見ていきます。

#!/bin/bash
# Calculate the sum
result=$((70+15))
# Print sum value
echo "sum = $result"

# Calculate the division
result=$((100/25))
# Print division value
echo "division = $result"

#Calculate Multiplication
result=$((15*15))
echo "Multiplication = $result"

上記のスクリプトをarithmetic.shとして保存して実行しましょう。以下の出力が得られます。

結論

これは、Bashスクリプトを開始するための完全な初心者ガイドです。ただし、このチュートリアルで説明されているもの以外にも、Bashには他にもあります。スキルを向上させるために私がお勧めする場所の1つは、GNUのBashリファレンスマニュアルです。この投稿で問題やコメントが発生した場合は、下のコメントをクリックしてください。


Linux
  1. 初心者向けのBashスクリプティングチュートリアル:概要、書き方、スクリプト例

  2. 初心者向けのLinuxcdコマンドチュートリアル(8例)

  3. 初心者向けのLinux日付コマンドチュートリアル(8例)

  1. 初心者向けのLinux通信コマンドチュートリアル(5例)

  2. 初心者向けのLinuxdfコマンドチュートリアル(8例)

  3. 初心者向けのLinuxduコマンドチュートリアル(10例)

  1. 初心者向けのLinuxechoコマンドチュートリアル(5つの例)

  2. 初心者向けのLinuxenvコマンドチュートリアル(5つの例)

  3. 初心者向けのLinuxサイズのコマンドチュートリアル(6つの例)