シェル変数
シェルスクリプトの作成、権限、実行
1.1シェルスクリプトの作成
hellloworld.sh
またはvi helloworld.shをタッチします
1.2実行権限を付与する
chmod + x helloworld.sh
1.3スクリプトを実行する
コマンド | コメント |
---|---|
[root @ localhost〜]#./helloworld.sh | スクリプトファイルパス(絶対パスと相対パス)===>実行権限が必要です |
[root @ localhost〜]#sh helloworld.sh | shスクリプトファイルパス===>は実行権限を必要としない可能性があります |
[root @ localhost〜]#ソースhelloworld.sh | ソーススクリプトファイルのパス===>パス自体が変更されます |
[root @ localhost〜]#。helloworld.sh | ドットでスクリプトをロード |
2つのパイプシンボルとリダイレクトシンボル
2.1パイプライン操作
パイプライン操作は、異なるコマンド間の共同作業のためのメカニズムを提供します。パイプ記号「|」の左側にあるコマンドの出力結果は、右のコマンドの入力(処理オブジェクト)として使用されます。複数のパイプを同じコマンドラインで使用できます。
cmdコマンド1 | cmdコマンド2 | cmdコマンドn
例:
free -m | grep“ Mem” | awk '{print $ 6}'
2.2リダイレクト操作
の種類 | オペレーター | 使用する |
---|---|---|
入力をリダイレクト | < | キーボードから入力する代わりに、指定したファイルからデータを読み取ります |
出力をリダイレクトする | > | 指定したファイルに出力結果を保存します(元のコンテンツを上書きします) |
出力をリダイレクトする | >> | 指定したファイルの最後に出力を追加します |
標準エラー出力 | 2> | エラー情報を指定したファイルに保存します(元のコンテンツを上書きします) |
標準エラー出力 | 2 >> | 指定したファイルの最後にエラーメッセージを追加します |
混合出力 | &> | 標準出力と標準エラーの内容を指定したファイルに保存します(元の内容を上書きします) |
混合出力 | &>> | 指定したファイルの最後に標準出力と標準エラーを追加します |
3つのシェル変数
3.1変数の型
カスタム変数:ユーザーが定義、変更、使用する
特殊変数:環境変数(USER HOME LANG PATH)、読み取り専用変数、ロケーション変数($ 1、$ 2、$ 3 ...)、事前定義済み変数
事前定義済み変数:
変数 | コメント |
---|---|
$# | コマンドラインの位置変数の数 |
$ * | すべてのロケーション変数の内容 |
$? | 最後のコマンドが実行された後に返されるステータス。戻りステータス値は0は実行が正常であることを意味し、ゼロ以外の値は異常またはエラーを意味します |
$ 0 | 現在実行中のプロセス/プログラムの名前(つまり、現在のプログラムに戻る) |
$ @ | すべての定位置パラメーターリストを分割する |
$ * | すべての位置パラメータリストを全体として扱う |
3.2変数代入についての注意点
変数名が直後に続く他の文字と混同されやすい場合は、中括弧「{}」を追加して変数名を囲む必要があります。そうしないと、正しい変数名が表示されず、未定義の変数がnull値として表示されます。
3.2.1二重引用符( ")
主に文字列を定義するために使用します。割り当てる内容にスペースが含まれる場合は、二重引用符で囲む必要があり、それ以外の場合は省略できます。
「$」記号を使用して、二重引用符の範囲内の他の変数の値を参照できます。
3.2.2単一引用符( ')
一重引用符の範囲内では、他の変数の値を引用することはできず、すべての文字が通常の文字として扱われます。
3.2.3バックティック( `)
バックティックは、実行可能なコマンドラインである必要があります。つまり、バックティックの内容をコマンドとしてターミナルに入力し、出力結果を新しいコマンドとしてターミナルに入力します。
図中の「expr」は計算を意味し、「12 + 13」の結果を計算して「25」を取得します。コマンドとして25を入力するとコマンドが見つかりません...
注意:
複数のレベルでアポストロフィを入れ子にすることは困難です。代わりに "$()"を使用できます。
例えば:
3.2.4読み取りコマンド
readコマンドは、ユーザーに情報を入力して簡単な対話型プロセスを実装するように促すために使用されます。実行時に、キーボードからコンテンツの行を読み取ります。スペースを区切り文字として使用して、指定した変数に読み取りフィールドを順番に割り当てます。
readコマンドを "-p"および "-t"オプションと組み合わせて、プロンプトメッセージと待機時間(デフォルトは秒)を設定できます。
例:
もう一度実行してください
3.3変数スコープ
デフォルトでは、新しく定義された変数はローカル変数であり、現在の環境でのみ有効です。コマンド「bash」を入力してサブシェル環境に入ると、ローカル変数は使用できなくなります。
指定された変数は、コマンド「export」を使用して「グローバル変数」としてエクスポートでき、複数の変数を同時に操作でき、変数名はスペースで区切られます。