Bashスクリプトは、シェルコマンドの実行、複数のコマンドの同時実行、管理タスクのカスタマイズ、タスクの自動化の実行など、さまざまな目的に使用できます。したがって、bashプログラミングの基本に関する知識はすべてのLinuxユーザーにとって重要です。この記事は、bashプログラミングの基本的な考え方を理解するのに役立ちます。ここでは、bashスクリプトの一般的な操作のほとんどを非常に簡単な例で説明します。
この記事では、bashプログラミングの次のトピックについて説明します。
- こんにちは世界
- エコーコマンド
- コメント
- 複数行コメント
- Whileループ
- Forループ
- ユーザー入力を取得する
- Ifステートメント
- そして条件ifステートメント
- または条件ifステートメント
- それ以外の場合とその他の条件
- ケースコンディション
- コマンドラインから引数を取得する
- 名前を使用してコマンドラインから引数を取得する
- 変数に2つの文字列を組み合わせる
- 文字列の部分文字列を取得する
- 変数に2つの数値を追加します
- 関数を作成する
- 関数パラメーターを使用する
- スクリプトからの戻り値を渡す
- ディレクトリを作成する
- 存在を確認してディレクトリを作成する
- ファイルを読む
- ファイルを削除する
- ファイルに追加
- ファイルが存在するかどうかをテストする
- メール送信の例
- 現在の日付を解析する
- 待機コマンド
- スリープコマンド
最初のBASHプログラムを作成して実行します。
ターミナルから、または任意のbashファイルを実行することにより、bashスクリプトを実行できます。ターミナルから次のコマンドを実行して、非常に単純なbashステートメントを実行します。コマンドの出力は「 こんにちは世界 '。
$捨てた 'こんにちは世界'
任意のエディターを開いてbashファイルを作成します。ここ、 ナノ エディターを使用してファイルを作成し、ファイル名を「」に設定します First.sh ’
$ナノFirst.sh
次のbashスクリプトをファイルに追加し、ファイルを保存します。
#!/ bin / bash捨てた 'こんにちは世界'
bashファイルは2つの方法で実行できます。 1つはbashコマンドを使用する方法で、もう1つはbashファイルに実行権限を設定してファイルを実行する方法です。両方の方法がここに示されています。
$bashFirst.shまたは、
$chmoda + x First.sh$。/First.sh
エコーコマンドの使用:
さまざまなオプションでechoコマンドを使用できます。次の例では、いくつかの便利なオプションについて説明します。 ‘を使用する場合 捨てた オプションを指定せずに ’コマンドを実行すると、デフォルトで改行が追加されます。 '-NS' オプションは、改行なしでテキストを印刷するために使用され、 '-と' オプションは、出力から円記号を削除するために使用されます。 ‘という名前の新しいbashファイルを作成します echo_example.sh ’を入力し、次のスクリプトを追加します。
#!/ bin / bash捨てた 「改行付きのテキストの印刷」
捨てた -NS 「改行なしでテキストを印刷する」
捨てた -と 'NS削除NSバックスラッシュNS文字NS'
bashコマンドでファイルを実行します。
$bashecho_example.sh
コメントの使用:
‘#’ シンボルは、bashスクリプトに1行のコメントを追加するために使用されます。 ‘という名前の新しいファイルを作成します comment_example.sh ’ 次のスクリプトを1行のコメント付きで追加します。
#!/ bin / bash#2つの数値を追加します
((((和=25+35)。)。
#結果を印刷する
捨てた $ sum
bashコマンドでファイルを実行します。
$bashcomment_example.sh
複数行コメントの使用:
bashではさまざまな方法で複数行コメントを使用できます。簡単な方法を次の例に示します。次の名前の新しいbashを作成します。 ‘multiline-comment.sh’ 次のスクリプトを追加します。ここ、 ‘:’ と ' 記号は、bashスクリプトに複数行コメントを追加するために使用されます。この次のスクリプトは、5の2乗を計算します。
#!/ bin / bash:'
次のスクリプトは計算します
数値の2乗値5。
'
((((範囲=5*5)。)。
捨てた $ area
bashコマンドでファイルを実行します。
$bashmultiline-comment.sh
bashコメントの使用について詳しくは、次のリンクを確認してください。
https://linuxhint.com/bash_comments/
Whileループの使用:
次の名前のbashファイルを作成します。 ‘while_example.sh’、 の使用法を知るために その間 ループ。例では、 その間 ループは次のように繰り返されます 5 回。の値 カウント 変数は次のように増加します 1 各ステップで。の値が カウント 変数は5になり、次に その間 ループは終了します。
#!/ bin / bash有効=NS
カウント=1
その間 [ $ valid ]
NS
捨てた $ count
もしも [ $ count -eq 5 ];
それから
壊す
なれ
((((count ++)。)。
終わり
bashコマンドでファイルを実行します。
$bashwhile_example.sh
whileループの使用について詳しくは、次のリンクを確認してください。
https://linuxhint.com/bash-while-loop-examples/
Forループの使用:
基本 にとって ループ宣言を次の例に示します。 ‘という名前のファイルを作成します for_example.sh ’を使用して、次のスクリプトを追加します にとって ループ。ここ、 にとって ループは次のように繰り返されます 10 時間を計り、変数のすべての値を出力します。 カウンター 一行で。
#!/ bin / bashにとって (((( カウンター=10;カウンター>>0;カウンター - )。)。
NS
捨てた -NS '$ counter'
終わり
printf 'NS'
bashコマンドでファイルを実行します。
$bashfor_example.sh
bashスクリプトでは、さまざまな目的や方法でforループを使用できます。次のリンクをチェックして、forループの使用について詳しく知ることができます。
https://linuxhint.com/bash-for-loop-examples/
ユーザー入力の取得:
' 読んだ ’コマンドは、bashでユーザーから入力を受け取るために使用されます。 ‘という名前のファイルを作成します user_input.sh ’を追加し、ユーザーからの入力を取得するための次のスクリプトを追加します。ここでは、1つの文字列値がユーザーから取得され、他の文字列値を組み合わせて値が表示されます。
#!/ bin / bash捨てた 'あなたの名前を入力してください'
読んだ名前
捨てた 'いらっしゃいませ$ nameLinuxHintへ '
bashコマンドでファイルを実行します。
$bashuser_input.sh
次のリンクをチェックして、ユーザー入力の使用について詳しく知ることができます。
https://linuxhint.com/bash-script-user-input/
ifステートメントの使用:
単一または複数の条件でif条件を使用できます。このステートメントの開始ブロックと終了ブロックは、次のように定義されます。 'もしも' と 'なれ' 。 ‘という名前のファイルを作成します simple_if.sh ’と次のスクリプトを使用して、使用法を確認します もしも bashのステートメント。ここ、 10 変数に割り当てられ、 NS 。の値が $ n が10未満の場合、出力は次のようになります。 1桁の数字です 、それ以外の場合、出力は次のようになります 2桁の数字です 。比較のために、 ‘-lt’ ここで使用されます。比較のために、 ‘-eq’ にとって 平等 、 '-生まれ' にとって 平等ではない と ‘-gt’ にとって より大きい bashスクリプトで。
#!/ bin / bashNS=10
もしも [ $ n -lt 10 ];
それから
捨てた 「1桁の数字です」
そうしないと
捨てた 「2桁の数字です」
なれ
bashコマンドでファイルを実行します。
$bashsimple_if.sh
ANDロジックでifステートメントを使用する:
2つ以上の条件を持つifステートメントでは、さまざまなタイプの論理条件を使用できます。を使用してifステートメントで複数の条件を定義する方法 と 次の例にロジックを示します。 '&&' 適用するために使用されます と の論理 もしも 声明。名前の付いたファイルを作成します ‘if_with_AND.sh’ 次のコードを確認します。ここで、の値 ユーザー名 と パスワード 変数はユーザーから取得され、「 管理者 ' と ' 秘密の ’。両方の値が一致する場合、出力は次のようになります 有効なユーザー 、それ以外の場合、出力は次のようになります 無効なユーザー 。
!/午前/bash捨てた 'ユーザーネームを入力してください'
読んだユーザー名
捨てた 'パスワードを入力する'
読んだパスワード
もしも [[ (( $ username==「管理者」 && $ password=='秘密の' )。 ]];それから
捨てた 「有効なユーザー」
そうしないと
捨てた '無効なユーザー'
なれ
bashコマンドでファイルを実行します。
$bashif_with_AND.sh
ORロジックでifステートメントを使用する:
' || ’は定義に使用されます また の論理 もしも 調子。名前の付いたファイルを作成します ‘if_with_OR.sh’ 次のコードを使用して、の使用を確認します また の論理 もしも 声明。ここで、の値 NS ユーザーから取得されます。値が等しい場合 15 また フォーファイブ その場合、出力は次のようになります あなたはゲームに勝った 、それ以外の場合、出力は次のようになります あなたはゲームに負けました 。
#!/ bin / bash捨てた 「任意の番号を入力してください」
読んだNS
もしも [[ (( $ n -eq 15 || $ n -eq フォーファイブ )。 ]]
それから
捨てた 「あなたはゲームに勝った」
そうしないと
捨てた 「あなたはゲームに負けました」
なれ
bashコマンドでファイルを実行します。
$bashif_with_OR.sh
else ifステートメントの使用:
の用法 それ以外の場合 bashの状態は他のプログラミング言語と少し異なります。 ‘ エリフ ’は定義に使用されます それ以外の場合 bashの状態。 ‘という名前のファイルを作成します elseif_example.sh ’と次のスクリプトを追加して、方法を確認します それ以外の場合 bashスクリプトで定義されています。
#!/ bin / bash捨てた 「ラッキーナンバーを入力してください」
読んだNS
もしも [ $ n -eq 101 ];
それから
捨てた 「あなたは一等賞を獲得しました」
エリフ [ $ n -eq 510 ];
それから
捨てた 「あなたは2等賞を獲得しました」
エリフ [ $ n -eq 999 ];
それから
捨てた 「あなたは3等賞を獲得しました」
そうしないと
捨てた 「申し訳ありませんが、次回お試しください」
なれ
bashコマンドでファイルを実行します。
$bashelseif_example.sh
ケースステートメントの使用:
場合 ステートメントはの代替として使用されます if-elseif-else 声明。このステートメントの開始ブロックと終了ブロックは、「 場合 ' と ' esac ’。 ‘という名前の新しいファイルを作成します case_example.sh ’を入力し、次のスクリプトを追加します。次のスクリプトの出力は前のスクリプトと同じになります それ以外の場合 例。
#!/ bin / bash捨てた 「ラッキーナンバーを入力してください」
読んだNS
場合 $ n の
101)。
捨てた 捨てた 「あなたは一等賞を獲得しました」 ;;
510)。
捨てた 「あなたは2等賞を獲得しました」 ;;
999)。
捨てた 「あなたは3等賞を獲得しました」 ;;
*)。
捨てた 「申し訳ありませんが、次回お試しください」 ;;
esac
bashコマンドでファイルを実行します。
$bashcase_example.sh
コマンドラインから引数を取得します。
Bashスクリプトは、他のプログラミング言語と同様に、コマンドライン引数から入力を読み取ることができます。例えば、 $ 1 と $ 2 変数は、最初と2番目のコマンドライン引数を読み取るために使用されます。名前の付いたファイルを作成します command_line.sh 次のスクリプトを追加します。次のスクリプトによって読み取られた2つの引数値は、引数の総数と引数値を出力として出力します。
#!/ bin / bash捨てた '引数の合計:$#'
捨てた '最初の引数= $ 1'
捨てた '2番目の引数= $ 2'
bashコマンドでファイルを実行します。
$bashcommand_line.shLinuxヒント
コマンドライン引数の使用について詳しくは、次のリンクを確認してください。
https://linuxhint.com/command_line_arguments_bash_script/
次の名前のコマンドラインから引数を取得します。
次のスクリプトに、名前付きのコマンドライン引数を読み取る方法を示します。 ‘という名前のファイルを作成します command_line_names.sh ’ 次のコードを追加します。ここで、2つの議論、 NS と と このスクリプトによって読み取られ、XとYの合計が出力されます。
#!/ bin / bashにとって怒りの '[メール保護]'
NS
索引= $((捨てた $ arg | 切る -f1 -NS=)。
時間= $((捨てた $ arg | 切る -f2 -NS=)。
場合 $ index の
NS)。 NS=$時間;;
と)。 と=$時間;;
*)。
esac
終わり
((((結果= x + y)。)。
捨てた 'X + Y =$ result'
bashコマンドと2つのコマンドライン引数を使用してファイルを実行します。
$bashcommand_line_namesNS=フォーファイブ と=30
文字列変数を組み合わせる:
文字列変数はbashで簡単に組み合わせることができます。名前の付いたファイルを作成します string_combine.sh 次のスクリプトを追加して、変数を一緒に配置するか、を使用して、bashで文字列変数を組み合わせる方法を確認します。 '+' オペレーター。
#!/ bin / bashstring1=「Linux」
string2='ヒント'
捨てた '$ string1$ string2'
string3=$ string1+$ string2
string3 + =「良いチュートリアルブログサイトです」
捨てた $ string3
bashコマンドでファイルを実行します。
$bashstring_combine.sh
文字列の部分文字列を取得します。
他のプログラミング言語と同様に、bashには文字列データから値を切り取る組み込み関数がありません。ただし、次のスクリプトに示すbashで、別の方法で部分文字列のタスクを実行できます。スクリプトをテストするには、 ‘という名前のファイルを作成します substring_example.sh ’と次のコード。ここで、値、 6 サブストリングが開始する開始点を示し、 5 部分文字列の長さを示します。
#!/ bin / bashStr=「LinuxHintからLinuxを学ぶ」
subStr=$ {Str:6:5}
捨てた $ subStr
bashコマンドでファイルを実行します。
$bashsubstring_example.sh
2つの数字を追加します。
さまざまな方法でbashで算術演算を実行できます。次のスクリプトに、二重角かっこを使用してbashに2つの整数を追加する方法を示します。 ‘という名前のファイルを作成します add_numbers.sh ’と次のコード。 2つの整数値がユーザーから取得され、加算の結果が出力されます。
#!/ bin / bash捨てた 「最初の番号を入力してください」
読んだNS
捨てた 「2番目の数字を入力してください」
読んだと
(((( 和= x + y)。)。
捨てた '加算の結果=$ sum'
bashコマンドでファイルを実行します。
$bashadd_numbers.sh
bash演算の詳細については、次のリンクを確認してください。
https://linuxhint.com/bash_arithmetic_operations/
関数の作成:
簡単な関数を作成して関数を呼び出す方法を次のスクリプトに示します。 ‘という名前のファイルを作成します function_example.sh ’を入力し、次のコードを追加します。 bashスクリプトで角かっこを使用せずに、名前でのみ関数を呼び出すことができます。
#!/ bin / bash関数F1(()。
{{
捨てた 「私はbashプログラミングが好きです」
}
F1
bashコマンドでファイルを実行します。
$bashfunction_example.sh
パラメータを使用して関数を作成します。
Bashは、関数宣言時に関数パラメーターまたは引数を宣言できません。ただし、他の変数を使用して、関数内でパラメーターを使用できます。関数の呼び出し時に2つの値が渡された場合、値の読み取りには$ 1変数と$ 2変数が使用されます。 ‘という名前のファイルを作成します function | _parameter.sh ’を入力し、次のコードを追加します。ここで、関数、 ‘ Rectangle_Area ’ パラメータ値に基づいて長方形の面積を計算します。
#!/ bin / bashRectangle_Area(()。 {{
範囲= $(((($ 1 * $ 2)。)。
捨てた 'エリアは:$ area'
}
Rectangle_Area10 20
bashコマンドでファイルを実行します。
$bashfunction_parameter.sh
関数からの戻り値の受け渡し:
Bash関数は、数値と文字列値の両方を渡すことができます。関数から文字列値を渡す方法を次の例に示します。 ‘という名前のファイルを作成します function_return.sh ’を入力し、次のコードを追加します。関数、 挨拶() 文字列値を変数に返します。 時間 後で他の文字列と組み合わせて印刷します。
#!/ bin / bash関数挨拶(()。 {{
NS='こんにちは、$ name'
捨てた $ str
}
捨てた 'あなたの名前を入力してください'
読んだ名前
時間= $((挨拶)。
捨てた '関数の戻り値は$時間'
bashコマンドでファイルを実行します。
$bashfunction_return.sh
bash関数の使用について詳しくは、次のリンクを確認してください。
https://linuxhint.com/return-string-bash-functions/
ディレクトリの作成:
Bashは「 mkdir ’コマンドを使用して新しいディレクトリを作成します。 ‘という名前のファイルを作成します make_directory.sh ’を追加し、次のコードを追加して、ユーザーから新しいディレクトリ名を取得します。ディレクトリ名が現在の場所に存在しない場合は、ディレクトリが作成されます。存在しない場合、プログラムはエラーを表示します。
#!/ bin / bash捨てた 「ディレクトリ名を入力してください」
読んだnewdir
「mkdir $ newdir「
bashコマンドでファイルを実行します。
$bashmake_directory.sh
存在を確認してディレクトリを作成します。
‘を実行する前に、現在の場所にディレクトリが存在するかどうかを確認する場合 mkdir ’コマンドを実行すると、次のコードを使用できます。 '-NS ’オプションは、特定のディレクトリが存在するかどうかをテストするために使用されます。 ‘という名前のファイルを作成します directory_exist.sh ’ 次のコードを追加して、存在を確認してディレクトリを作成します。
#!/ bin / bash捨てた 「ディレクトリ名を入力してください」
読んだndr
もしも [ -NS '$ ndir' ]
それから
捨てた 「ディレクトリが存在します」
そうしないと
「mkdir $ ndir「
捨てた 「作成されたディレクトリ」
なれ
bashコマンドでファイルを実行します。
$bashdirectory_exist.sh
ディレクトリの作成について詳しくは、次のリンクを確認してください。
https://linuxhint.com/bash_mkdir_not_existent_path/
ファイルを読む:
loopを使用すると、bashで任意のファイルを1行ずつ読み取ることができます。 ‘という名前のファイルを作成します read_file.sh ’と次のコードを追加して、‘という名前の既存のファイルを読み取ります book.txt '。
#!/ bin / bashファイル='book.txt'
その間 読んだライン;NS
捨てた $ line
終わり < $ file
bashコマンドでファイルを実行します。
$bashread_file.sh次のコマンドを実行して、 ‘の元のコンテンツを確認します book.txt ' ファイル。
$猫book.txt
次のリンクをチェックして、ファイルを読み取るさまざまな方法を知ることができます。
https://linuxhint.com/read_file_line_by_line_bash/
ファイルを削除します:
' rm ’コマンドはbashで使用され、ファイルを削除します。 ‘という名前のファイルを作成します delete_file.sh ’を次のコードで使用して、ユーザーからファイル名を取得して削除します。ここ、 '-私' オプションは、ファイルを削除する前にユーザーから許可を取得するために使用されます。
#!/ bin / bash捨てた 「削除するファイル名を入力してください」
読んだfn
rm -私 $ fn
bashコマンドでファイルを実行します。
$ls$bashdelete_file.sh
$ls
ファイルに追加:
を使用して、既存のファイルに新しいデータを追加できます。 '>>' bashの演算子。名前の付いたファイルを作成します ‘append_file.sh ’を追加し、次のコードを追加して、ファイルの最後に新しいコンテンツを追加します。ここ、 ' Laravel5の学習 ’は‘のに追加されます book.txt ’ スクリプトを実行した後のファイル。
#!/ bin / bash捨てた 「ファイルを追加する前に」
猫book.txt
捨てた 「Laravel5の学習」>>book.txt
捨てた 「ファイルを追加した後」
猫book.txt
bashコマンドでファイルを実行します。
$bashappend_file.sh
ファイルが存在するかどうかをテストします。
を使用してbash内のファイルの存在を確認できます '-と' また '-NS' オプション。 '-NS' 次のスクリプトでは、ファイルの存在をテストするためにオプションを使用しています。 ‘という名前のファイルを作成します file_exist.sh ’を入力し、次のコードを追加します。ここで、ファイル名はコマンドラインから渡されます。
#!/ bin / bashファイル名=$ 1
もしも [ -NS '$ filename' ];それから
捨てた 'ファイルが存在しています'
そうしないと
捨てた 'ファイルが存在しません'
なれ
次のコマンドを実行して、ファイルの存在を確認します。ここ、 book.txt ファイルが存在し、 book2.txt 現在の場所に存在しません。
$ls$bashfile_exist.sh book.txt
$bashfile_exist.sh book2.txt
メールを送る:
‘を使用してメールを送信できます 郵便物 ' また ' sendmail ' 指図。これらのコマンドを使用する前に、必要なすべてのパッケージをインストールする必要があります。 ‘という名前のファイルを作成します mail_example.sh ’を入力し、次のコードを追加してメールを送信します。
#!/ bin / bash受信者= admin@example.com
主題=あいさつ
メッセージ=私たちのサイトへようこそ
「郵便物-NS $ Subject $ Recipient <<< $メッセージ「
bashコマンドでファイルを実行します。
$bashmail_example.sh
現在の日付を解析する:
`を使用して、現在のシステムの日付と時刻の値を取得できます 日にち `コマンド。日付と時刻の値のすべての部分は、「 Y」、「m」、「d」、「H」、「M」 と ' NS' 。 ‘という名前の新しいファイルを作成します date_parse.sh ’ 次のコードを追加して、日、月、年、時、分、秒の値を区切ります。
#!/ bin / bash年=「日にち+%と「
月=「日にち+%NS「
日=「日にち+%NS「
時間=「日にち+%NS「
分=「日にち+%NS「
2番=「日にち+%NS「
捨てた 「日にち「
捨てた '現在の日付は次のとおりです。$ Day-$ Month-$ Year'
捨てた '現在の時刻は次のとおりです。$ Hour:$ Minute:$ Second'
bashコマンドでファイルを実行します。
$bashdate_parse.sh
待機コマンド:
待つ は、実行中のプロセスが完了するのを待つLinuxの組み込みコマンドです。 待つ コマンドは、特定のプロセスIDまたはジョブIDで使用されます。 waitコマンドでプロセスIDまたはジョブIDが指定されていない場合、現在のすべての子プロセスが完了するのを待機し、終了ステータスを返します。 ‘という名前のファイルを作成します wait_example.sh ’ 次のスクリプトを追加します。
#!/ bin / bash捨てた 「待機コマンド」 &
process_id=$!
待つ $ process_id
捨てた 「ステータス$で終了しましたか?」
bashコマンドでファイルを実行します。
$bashwait_example.sh
待機コマンドの詳細については、次のリンクを確認してください。
スリープコマンド:
コマンドの実行を特定の期間一時停止する場合は、次を使用できます。 寝る 指図。遅延量は次のように設定できます 秒(s)、分(m)、時間(h)、日(d)。 名前の付いたファイルを作成します ‘sleep_example.sh’ 次のスクリプトを追加します。このスクリプトは、実行後5秒間待機します。
#!/ bin / bash捨てた待ってにとって 5秒
寝る 5
捨てた完了
bashコマンドでファイルを実行します。
$bashsleep_example.sh
次のリンクをチェックして、sleepコマンドの詳細を確認できます。
https://linuxhint.com/sleep_command_linux/
この記事を読んだ後、bashスクリプト言語の基本概念を理解し、要件に基づいてそれらを適用できるようになることを願っています。