Linuxで簡単なシェルスクリプトを作成する方法
シェルスクリプトの作成は、Linuxユーザーが指先で習得する必要のある最も重要なスキルの1つです。シェルスクリプトは、行ごとに実行するのが面倒な反復タスクを自動化する上で大きな役割を果たします。
このチュートリアルでは、すべてのLinuxユーザーが持つべき基本的なシェルスクリプト操作のいくつかに焦点を当てます。
1。簡単なシェルスクリプトを作成する
シェルスクリプトは、 ASCIIで構成されるファイルです。 文章。まず、簡単なシェルスクリプトを作成します。これを行うには、テキストエディタを使用します。コマンドラインとGUIベースの両方で、かなりの数のテキストエディタがあります。このガイドでは、vimエディターを使用します。
まず、「 Helloworld」を表示する簡単なスクリプトを作成します。 」を実行すると。
$ vim hello.sh
次のコンテンツをファイルに貼り付けて保存します。
#!/bin/bash # Print Hello world message echo "Hello World!"
シェルスクリプトを1行ずつ見ていきましょう。
- 最初の行–
#!/bin/bash
–シェバンヘッダーとして知られています。これは、スクリプトの解釈に使用されるプログラムを示す特別な構成です。この場合、これは bashになります / bin / bashで示されるシェル 。 Pythonなどの他のスクリプト言語があります これは#!/usr/bin/python3
で示されます およびPerl そのシバンヘッダーは#!/usr/bin/perl
で示されます 。 - 2行目はコメントです。コメントは、シェルスクリプトが実行することと、スクリプトの実行時に実行されないことを説明するステートメントです。コメントの前には常にハッシュ記号
#
が付いています 。 - 最後の行は、「 HelloWorld」を出力するコマンドです。 ターミナルでのメッセージ。
次のステップは、 chmod を使用して実行権限を割り当て、スクリプトを実行可能にすることです。 示されているコマンド。
$ chmod +x hello.sh
最後に、次のいずれかのコマンドを使用してシェルスクリプトを実行します。
$ bash hello.sh OR $ ./hello.sh
2。条件文を使用したコードの実行
他のプログラミング言語と同様に、条件付きステートメント 構文をわずかに変更するだけで、決定を下すためにbashスクリプトで使用されます。 ifについて説明します 、 if-else、 およびelif 条件付きステートメント。
ifステートメントのみの例
if ステートメントは、単一または複数の条件をテストするために使用できます。 ifの基本的な使用法から始めます 単一の条件をテストするステートメント。 if ステートメントはif ... fi
によって定義されます ブロック。
if command then statement fi
以下のシェルスクリプトを見てみましょう。
#!/bin/bash echo 'Enter the score' read x if [[ $x == 70 ]]; then echo 'Good job!' fiをエコーします。
上記のシェルスクリプトは、変数 xに格納されるスコアを提供するようにユーザーに促します 。スコアが70に対応する場合 、スクリプトは「お疲れ様でした!」という出力を返します。 」。比較演算子==
入力されたスコアが変数xに格納されているかどうかをテストするために使用されます 、 100に相当します 。
使用できる他の比較演算子は次のとおりです。
-
-eq
–等しい -
-ne
–等しくない -
-lt
–未満 -
-le
–以下 -
-lt
–未満 -
-ge
–以上
たとえば、ifステートメント 下のブロックは「もっと頑張る」を印刷します ’入力スコアが 50未満の値の場合 。
if [[ $x -lt 50 ]]; then echo 'Work Harder!' fi
if-elseステートメントの例
2つの可能な結果がある状況の場合:–これかそれか–if-elseステートメントが役立ちます。
if command then statement1 else statement2 fi
以下のスクリプトは、入力スコアを読み取り、それが 70以上であるかどうかを確認します。 。
スコアが70以上の場合 、「すばらしい仕事です。合格しました! ' メッセージ。ただし、スコアが 70を下回った場合 、出力「失敗しました ’が印刷されます。
#!/bin/bash echo 'Enter the score' read x if [[ $x -ge 70 ]]; then echo 'Great job, You passed!' else echo 'You failed' fi
if-elif-elseステートメントの例
複数の条件があり、結果が異なるシナリオでは、 if-elif-else ステートメントが使用されます。このステートメントの形式は次のとおりです。
if condition1 then statement1 elif condition2 then statement2 else statement3 fi
たとえば、入力された番号が 90であるかどうかを確認する宝くじのスクリプトがあります。 、 60 または30 。
#!/bin/bash echo 'Enter the score' read x if [[ $x -eq 90 ]]; then echo “You have won the First Prize” elif [[ $x -eq 60 ]]; then echo “You have won the Second Prize” elif [[ $x -eq 30 ]]; then echo “You have won the Second Prize” else echo “Please try again” fi
3。 ANDロジックでのIfステートメントの使用
ifを使用できます ANDと一緒にステートメント 2つの条件が満たされた場合にタスクを実行する論理演算子。 &&
演算子はANDを表すために使用されます ロジック。
#!/bin/bash echo 'Please Enter your user_id' read user_id echo 'Please Enter your tag_no' read tag_id if [[ ($user_id == “tecmint” && $tag_id -eq 3990) ]]; then echo “Login successful” else echo “Login failure” fi
5。 ORロジックでのIfステートメントの使用
またはを使用する場合 ロジック、それは||
で表されます シンボルの場合、期待される結果を得るには、いずれかの条件がスクリプトで満たされている必要があります。
#!/bin/bash echo 'Please enter a random number' read number if [[ (number -eq 55 || number -eq 80) ]]; then echo 'Congratulations! You’ve won' else echo 'Sorry, try again' fi
ループ構造を使用する
バッシュループ 特定の結果が得られるまで、ユーザーが一連のタスクを実行できるようにします。これは、反復的なタスクを実行するのに役立ちます。このセクションでは、他のプログラミング言語でも見られるループのいくつかを紹介します。
ループ中
これは、操作が最も簡単なループの1つです。構文は非常に単純です:
while <some test> do commands done
以下のwhileループは、実行時に1から10までのすべての数値を一覧表示します。
#!/bin/bash # A simple while loop counter=1 while [ $counter -le 10 ] do echo $counter ((counter++)) done
whileループについて説明しましょう:
変数カウンター 1に初期化されます 。そして、変数が 10以下である間 、条件が満たされるまで、カウンターの値がインクリメントされます。行echo$ counter 1から10までのすべての数値を出力します。
Forループ
whileループのように 、forループ コードを繰り返し実行するために使用されます。つまりユーザーが定義したコードの実行を可能な限り繰り返します。
構文は次のとおりです。
for var in 1 2 3 4 5 N do command1 command2 done
forループ 以下は、1から10まで繰り返し、画面上でそれらの値を処理します。
これを実現するためのより良い方法は、二重中括弧{ }
を使用して範囲を定義することです。 すべての数字を入力する代わりに、示されているように。
#!/bin/bash # Specify range in a for loop for num in {1..10} do echo $num doneのforloopfornumで範囲を指定します
Bashの位置パラメータ
位置パラメーターは、値がシェルに渡されたときにスクリプトで参照されるが、割り当てることができない特別な変数です。位置パラメータは$0 $ 1 $ 2 $ 3から実行されます ……〜 $ 9 。 $ 9を超えて 値の場合、パラメータは中括弧で囲む必要があります。例: $ {10}、${11}… など。
スクリプトを実行するとき、最初の位置パラメータは $ 0 シェルスクリプトの名前を取ります。 $ 1 パラメータは、端末で渡される最初の変数 $ 2を取ります 2番目の$3 3番目など。
図のようにスクリプトtest.shを作成しましょう。
#!/bin/bash echo "The name of the script is: " $0 echo "My first name is: " $1 echo "My second name is: " $2
次に、スクリプトを実行し、引数として1番目と2番目の名前を指定します。
# bash test.sh James Kiarie
出力から、出力される最初の変数がシェルスクリプトの名前(この場合は test.sh )であることがわかります。 。その後、シェルスクリプトで定義された位置パラメータに対応する名前が出力されます。
位置パラメータは、変数に値を明示的に割り当てる代わりに、入力するデータをカスタマイズするのに役立つという点で便利です。
シェルコマンドの終了コード
まず、終了コードとは何かという簡単な質問に答えましょう。 ?
ユーザーまたはシェルスクリプトによってシェルで実行されるすべてのコマンドには、終了ステータスがあります。終了ステータスは整数です。
0の終了ステータス コマンドがエラーなしで正常に実行されたことを意味します。 1から255までのすべて コマンドが失敗したか、正常に実行されなかったことを示します。
コマンドの終了ステータスを確認するには、$?
を使用します シェル変数。
終了ステータス1は、一般的なエラー、またはsudo権限のないファイルの編集などの許可されないエラーを示します。
終了ステータスが2の場合、コマンドまたは組み込みシェル変数の誤った使用を示しています。
127の終了ステータスは、通常「コマンドが見つかりません」という不正なコマンドを示しています。 ’エラー。
スクリプト内でのシェルコマンドの出力の処理
bashスクリプトでは、コマンドの出力を将来使用するために変数に格納できます。これはシェルコマンド置換とも呼ばれ、次の方法で実現できます。
variable=$(command) OR variable=$(/path/to/command) OR variable=$(command argument 1 argument 2 ...)
たとえば、日付を保存できます 今日という変数のコマンド シェルスクリプトを呼び出して、現在の日付を明らかにします。
#!/bin/bash today=$(date) echo “Today is $today”
別の例を見てみましょう。 Linuxシステムで有効なログインユーザーを検索するとします。どうしますか?まず、すべてのユーザー(システム、プロセス、ログインの両方のユーザー)のリストが / etc / passwdに保存されます。 ファイル。
ファイルを表示するには、catコマンドを使用する必要があります。ただし、ログインユーザーに絞り込むには、grepコマンドを使用して / bin / bashでユーザーを検索します 属性を設定し、 cut -c 1-10を使用します 示されているようにコマンドを実行して、名前の最初の10文字を表示します。
catコマンドを保存しました login_usersへ 変数。
#!/bin/bash login_users=$(cat /etc/passwd | grep /bin/bash | cut -c 1-10) echo 'This is the list of login users: echo $login_users
これで、簡単なシェルスクリプトの作成に関するチュートリアルは終了です。これがお役に立てば幸いです。
-
シェルスクリプトで構文チェックのデバッグモードを実行する方法
シェルスクリプトのデバッグシリーズは、さまざまなデバッグオプションと、シェルスクリプトのデバッグモードを有効にする方法を説明することから始めました。 シェルスクリプトを作成した後は、スクリプトの出力を調べて正しく機能していることを確認するのではなく、スクリプトを実行する前に、スクリプトの構文を実際に確認することをお勧めします。 シリーズのこのパートでは、構文チェックのデバッグモードの使用方法について説明します。このシリーズの最初のパートでさまざまなデバッグオプションについて説明したことを思い出してください。ここでは、それらを使用してスクリプトのデバッグを実行します。 詳細デバッグモードの有
-
Vimでシェルスクリプトのカスタムヘッダーテンプレートを作成する方法
この記事では、Vimエディターで新しく作成されたすべてのbashスクリプトのカスタムヘッダーを構成する簡単な方法を紹介します。これは、新しい.shを開くたびに vi / vimエディターを使用してファイルを作成すると、カスタムヘッダーがファイルに自動的に追加されます。 カスタムBashスクリプトヘッダーテンプレートファイルを作成する方法 まず、 sh_header.tempというテンプレートファイルを作成することから始めます。 、おそらく~/.vim/の下にカスタムbashスクリプトヘッダーが含まれています 自宅の下のディレクトリ。 $ vi ~/.vim/sh_header.temp 次