確かに、最後のセクションに「冒頭」を書くのは少し奇妙です。ただし、最初の記事 (数値演算) の冒頭では、シェル プログラミングの基礎を持たない読者でも理解できるように、シリーズ全体でシェル プログラミングのある程度の基礎が必要であると述べています。このシリーズを読んで、この冒頭の章を書き直すことにしました。冒頭の章では主に、シェルとは何か、シェルの動作環境、基本的なシェル構文、デバッグ スキルについて紹介します。
まず、次の図からオペレーティング システム全体におけるシェルの位置を見てみましょう。図の外側の円はオペレーティング システム全体 (たとえば、
Debian/Ubuntu/Slackwareなど)、内側の円はオペレーティング システムのコアを表します (例:
Linux カーネル)、そして
シェルそして
GUIユーザーとオペレーティング システム間のインターフェイスとしても機能します。
GUI非常に使いやすく、学びやすいグラフィカル ユーザー インターフェイスを提供します。
シェルユーザーにコマンド ライン インターフェイスを提供し、ユーザーのキーボード入力を受け取り、入力文字列内のコマンドを分析して実行し、実行結果をユーザーに返します。使用するのはより複雑になる可能性がありますが、使用するリソースは少なくなります。 , また、操作に慣れてくると作業効率が向上することもあり、バッチ処理の機能も備えているため、一部の用途では非常に人気があります。
シェルユーザー インターフェイスとしては、実際にはインタープリターです (次のようなインタープリター)。
リナックス以下はより一般的に使用されます
バッシュ)、現在を表示できます
シェル:
$ echo $Shell/bin/bash$ ls -l /bin/bash-rwxr-xr-x 1 ルート root 702160 2008-05-13 02:33 /bin/bash
インタプリタは単純なコマンドを解釈するだけでなく、スクリプトと呼ばれる特定の構文構造を持つファイルを解釈することもできます。これらのコマンドやスクリプト ファイルが具体的にどのように解釈されるかについては、ここでは詳しく分析しません。2008 年に書いた別の記事「Linux コマンド ラインでのプログラム実行の瞬間」を参照してください。
プログラムは特定の文法構造でファイルを解釈できるため、特定の文法に従ってプログラムを作成し、どのような文法で実行し、どのようにデバッグすることができます。以下で使用します
バッシュこれらの側面について例を挙げて説明しましょう。
次の演習を容易にするために、最初に基本的なオペレーティング環境をセットアップします。 Linux オペレーティング システムでは、実行中の
バッシュコマンド ラインは、コマンドの入力を待っています。このコマンド ラインは、グラフィカル インターフェイスの下に置くことができます。
ターミナル(例えば
Ubuntu非常に強力です
ターミネーター)、または文字インターフェイスにすることもできます
コンソール(使用できます
CTRL+ALT+F1~6トグル) 現在のものが見つかった場合
シェルいいえ
バッシュを次のように置き換えてください。
$ chsh $USER -s /bin/bash$ su $USER
または、単純に Bash と入力します。
$ bash$ echo $Shell # /bin/bash を確認します
Linux オペレーティング システムがインストールされていない場合は、一部のパブリック コミュニティが提供する Linux 仮想実験サービスの使用を検討することもできます。これらのサービスは通常、リモートで提供されます。
シェル、合格できます
Telnetまたは
しー練習するにはクライアントにログインしてください。
基本的な動作環境では、ユーザーが入力したコマンドやユーザーが作成したスクリプト ファイルをどのように実行するのでしょうか?
?
というシェルスクリプトを書いたとします。
テスト.sh。
1 つ目の方法は、実行するコマンドに実行権限があることを確認し、コマンドを直接入力して実行する方法です。
$ chmod +x /path/to/test.sh$ /path/to/test.sh
2 番目の方法は、次のようにスクリプトを直接記述することです。
バッシュインタプリタのパラメータは次のように渡されます。
$ bash /パス/to/test.sh
または
$ ソース /パス/to/test.sh
または
$ ./path/to/test.sh
まずは一つ
こんにちは世界プログラム。
シェル プログラムの基本構造を紹介しましょう。
こんにちは世界例えば:
#!/bin/bash -v# test.shecho Hello, World
上記のコードを次の名前で保存します
テスト.shを選択し、上記の 2 つの異なる方法で実行すると、次のような効果が確認できます。
方法 1:
$ chmod +x test.sh$ ./test.sh ./test.sh #!/bin/bash -v echo Hello, World Hello, World
方法 2:
$ bash test.shHello、World$ ソース test.shHello、World$ 。
2 つの実行結果に違いがあることがわかりました。なぜですか?ここで注意が必要です
テスト.shファイルの内容は 2 行のみで、2 行目が出力されます。
こんにちは世界どちらの方法でも目的は達成されますが、最初の方法ではスクリプト ファイル自体の内容がさらに出力されます。なぜでしょうか。
その理由は、スクリプト ファイルを直接実行するときに、この行がオペレーティング システムに使用するように指示することです。
#!シンボルの後のインタプリタと対応するパラメータは、スクリプト ファイルの解釈に使用されます。最初の行を分析すると、対応するインタプリタとパラメータは次のとおりであることがわかりました。
/bin/bash -v、そして
-vプログラムのソース コードを出力することになりますが、2 番目の方法を使用する場合はそれを指定しませんでした。
バッシュ追加の引数を渡すと、スクリプト ファイル自体が単純に解釈されます。
その他の構文の詳細については、本書巻末の付録 1 である「シェル プログラミング学習ノート」を直接参照してください。
シェル言語はインタプリタ言語であり、そのプログラミング プロセスはコンパイル言語とは若干異なります。基本的なプロセスは次のとおりです。
設計アルゴリズム
シェルを使用してアルゴリズムを実装するスクリプトを作成する
スクリプトを直接実行する
コンパイル言語のような面倒なコンパイルやリンクの処理がないことがわかりますが、その分、実行時に構文エラーや論理エラーが発生するため、うまくいかなかった場合のデバッグにはあまり便利ではありません。以下にデバッグ方法を簡単に紹介します。
シェル スクリプト デバッグ テクノロジまたは BASH デバッグ方法を直接参照できます。
シェル言語はインタプリタ型言語として、数値計算、記号処理、ファイル操作、ネットワーク操作などを含む多数の既存ツールを使用できます。したがって、記述プロセスはより効率的になる可能性がありますが、インタプリタ型言語であるため、実行中にディスクから外部プログラムを呼び出し続けたり、処理を切り替えたりすることは動作効率の点で不利になる可能性があるため、用途に応じてシェルやその他の言語を使用してプログラミングを行う必要があります。
Linuxコマンドラインでプログラムが実行された瞬間
Linux シェル プログラミング学習ノート
シェルスクリプトデバッグ技術
BASH のデバッグ方法