序文:
Raspberry Piを勉強していた時にbashスクリプトの始め方をまとめて以下の3つのブログにまとめました。
その時に参考にした本は「Raspberry Pi から Linux で遊ぶ」で、以下の Linux 学習シリーズは「Brother Niao's Linux Private Kitchen Basics Learning Chapter」をベースにしています。後者は前者よりも詳細であるため、次のいくつかのブログは前の3 つのブログ3,4,5
を補足するものになります。
Linux 学習 [3] - シェル スクリプト bash スクリプト - 変数割り当ての参照、数学的演算、簡単なスクリプトの作成
Linux 学習 [4] - シェル スクリプト bash スクリプト - 簡単な関数と呼び出し
Linux 学習 [5] - シェル スクリプト bash スクリプト - 判断と選択&ループ
1.bash関数
Linuxコンソールでは、↑ ↓
を押すと、以前に入力したコマンドに切り替えることができますが、これはbashにコマンド編集機能、つまり履歴機能があるためです。
このディレクトリを入力する場合/home/abcdefghijklmn/
、実際にはそれを入力するだけで済み/home/abcd+[tab]
、後続のディレクトリ名は自動的に入力されます。abcd で始まるディレクトリが複数ある場合は、Tab キーを数回押して入力できるすべてのオプションをリストし、次にいくつかの文字を入力して Tab キーを押して完了する必要がある場合があります。
この補完機能は、実は bash の強力な機能の 1 つです。
ls -al
現在のディレクトリ内のすべてのファイルの詳細をリストすることで、隠しファイルを含めます。このコマンドの本体は でls
、その後に 2 つのオプションが続きます-a,-l
。たとえば、この全体に lm という完全な名前を付けることができますalias lm='ls -al'
。この設定の後、その後の lm の入力は ls -al の入力と同じになります。このコマンドは比較的短いため、何のメリットも感じられないかもしれませんが、長いコマンドが含まれており、後で頻繁に使用する必要がある場合には、エイリアスを使用する効果は依然として非常に重要です。
特定のプログラムを実行しているときに、途中で停止したい場合は、ctrl+c を使用して停止できます。bash制御機能の具体化です。
以前に書いた単純な bash スクリプトは、実際にはシェル スクリプトの一種であり、bash のプログラムによるスクリプト機能でもあります。
その後、bash にはいくつかのパイプライン コマンドが含まれるため、ワイルドカードが非常に重要な役割を果たす可能性があります。実際、私たちが普段触れるコードの多くには、*
0 から無限までの任意の文字を表すなど、汎用文字が含まれています。
bash に関するいくつかのヒント:
1. たとえば、cd
非常に多層のディレクトリにコマンドを使用する場合、1 行が密集して記述され、全体が乱雑になることがよくあります。\+[enter]
次に、メソッドを使用して新しい行を入力します。
次の効果は と同等ですがcd xxxxxxxxxx/yyyy-xilinx-5.24/gcc-linux-ar
、もちろん、より整理して見せるためにさらに数行に分割することもできます。
2. また、発行するコマンドが特に長い場合や、間違ったコマンドを連続して入力した場合など、一連のコマンドを素早く削除したい場合は、一般的には削除キーを押します。
キーの組み合わせ | 関数 |
---|---|
[ctrl]+u/[ctrl]+k | カーソルより前方のコマンド文字列を削除する([ctrl]+u)と後方にコマンド文字列を削除する([ctrl]+k)です。 |
[ctrl]+a/[ctrl]+e | カーソルをコマンド文字列全体の先頭 ([ctrl]+a) または末尾 ([ctrl]+e) にそれぞれ移動します。 |
2. 変数
2.1 変数の代入
echo を使用して変数を出力し、変数の前に 1 を追加して$
変数の値を取得します。
たとえば、一般的に使用される手順は次のとおりです。echo $PATH
ただし、この命令の $ 記号の後には変数名が続きます。変数名の後に直接文字を続けることはできません。PATH 変数の値が出力され、IS が使用される場合、それは正しくありません。
つまりecho $PATHIS
、PATHIS
という変数が出力されます。
したがって、この状況では通常、出力変数を追加する必要があります{}
。
たとえば、次のようなecho ${PATH}IS
変数は通常、等号を使用して割り当てられます。値を割り当てる際にはさまざまなアプリケーション シナリオがあります。ここでは、見やすくするための表を示します。
例 | 取扱説明書 |
---|---|
私の名前=エドウィンジー | 変数にmyname 値を代入するedwinwzy |
错误示例: 私の名前 = エドウィンジー |
空白文字を等号の両側に直接配置することはできません。 |
错误示例: 1私の名前=エドウィンジー |
変数名には英字と数字のみを使用できますが、最初の文字を数字にすることはできません。 |
私の名前=エドウィンジー\$ | ここで、myname には値 edwinwzy$ が割り当てられていますが、$ これは特殊文字であるため、一般文字に変換する\ ために使用する。 |
myname=$(uname -r) | 命令の出力内容を変数の値として使用して値$ を |
PATH=${PATH}:/home/bin | Linux で環境変数を追加する場合、この割り当て方法を使用して蓄積する、つまり元の PATH に次の内容を追加することができます。 |
私の名前をエクスポート | 変数を割り当てた後、エクスポートを通じてその変数を環境変数にすることができ、他の bahs スクリプトがこの変数を使用できるようになります。 |
2.2 キャンセル変数の設定を解除する
一部の変数を誤って設定し、今後それらを使用したくない場合は、unset を使用して変数をキャンセルできます。
一般的な使用法はunset 变量名
次のとおりです。unset myname
2.3 環境変数
環境変数についての私の個人的な理解は、ターミナルにコマンドを入力すると、システムはそのコマンドがどの機能に対応するかを認識できるということです。
たとえば、クロスコンパイル チェーン ツールを手動でインストールする場合、GCC と GDB を環境変数 PATH (実行可能ファイルの検索パス) に手動で追加する必要があります。これにより、コンソールで gcc -v を入力すると、システムがそれを認識します。確認したい gcc のバージョン。
環境変数を表示するために使用されるコマンドは ですenv
。たとえば、これを仮想マシンに入力すると、env
現在のシェル環境のすべての変数とその内容を表示できます。
以下は env を入力した後の内容のインターセプトです。PATH も環境変数の一種であることがわかります。
いくつかのフィールドについては以下で説明します。
フィールド名 | 意味 |
---|---|
家 | ユーザーのホームフォルダー |
シェル | 現在の環境で使用されている SHELL プログラムはどれですか。つまり、/bin/bash スクリプトですか、それとも別のスクリプト プログラムですか? |
ヒストサイズ | 履歴に関連する指示 システムが入力した値の数がこれによって決まります。 |
パス | ディレクトリごとに: 区切られた実行可能ファイルの検索パス |
ラング | 言語家族。ここでの私のubuntuはデフォルトでen_US.UTF-8であり、言語ファミリーごとに対応するエンコード方法が異なります。たとえば、A コードは AaBbCc…Zz、B コードは ABCD…Zabcd…z のように、コードが異なるとプログラム コードの記述方法も異なります。 |
{ 変数スコープ}
カスタム変数はカスタム変数になります。
C 言語の変数に例えると、環境変数とカスタム変数の違いは、おそらくグローバル変数とローカル変数の違いとなります。
カスタム変数は、エクスポートを通じて環境変数に変換でき、サブプログラムから参照できます。
要約する
このブログは、書籍から bash 変数に関する内容の一部を抜粋し、私自身の学習経験に基づいて記録していますが、一般的な使用法についてはここには記録していません。