みなさん、こんにちは:今日のシェルを紹介します:
知って1.shell:
Linuxのコマンドを解釈するPythonインタプリタのようなコマンド・インタプリタであり、シェル自体、我々は、Linuxの一連のコマンドを実行するには、このスクリプトを実行して、Linuxのコマンドシェルスクリプトを書くことができます。これは、シェルプログラミングです。
歴史的な理由は、シェルのために多くの共通のシェルがありますが、SH、bashのを持っています
ビューシェル種:vimの/ etc / passwdファイル#最後の列は、シェルの種類を示してい
シェル注:開始#
Linuxのシェルスクリプトは、基本的にターミナルである:実装は、端末(に戻ってくる後シェルは、子プロセスをforkし、このプログラムをexecします組み込みコマンドコマンドではなく、単一の男のマニュアルを見つけることができない新しいプロセスを作成しません)
構築されたコマンドをチェックアウト:男のbash-組み込みコマンド#は組み込みコマンドは、新しいプロセスを作成しませんが、失敗の成功、1の終了コード(終了ステータス)0があります
プログラムの終了コードに見る:$エコー?
注意:シェルスクリプトを記述するときに、どのようにそれを強制しますか?
方法の一つ:スクリプトが増加するためのchmod A + X test.sh#が実行権限を
./test.sh#スクリプトの実行
方法2:/ binに/のsh test.sh#が同じPythonインタプリタでPythonスクリプトを実行するためのインタプリタに似引数として、スクリプト名をスクリプトを実行するためのインタプリタを指定し、Pythonスクリプト名
方法3 :.ソースtest.shまたはtest.sh
ターミナルでのLinuxのコマンドのいずれかの実行する場合:
例えば:(CD ..; LS-L)セミコロンで区切ら#複数のコマンドは、子プロセスが動作結果端末に影響を与えないであろうフォークう
CDは..;セミコロンで区切られたLS -l#複数のコマンドは、ターミナルに影響を及ぼし
2.変数:
命名規則:すべて大文字は、組成物を強調しました。
環境変数:printenvは環境変数環境変数は親プロセスから子プロセスに渡すことができます見ることができます
ローカル変数:すべての変数を表示する設定は、ローカル変数および環境変数、変数はスペースなし等号の両側に定義されているが含まれます。
ローカル変数#のエクスポート、インポートローカル変数環境変数。
未設定の変数は、#変数を削除します
すべての変数は文字列です
現在のシェルの種類を表示するには、エコー$ SHELLの#
3.ファイル名を置き換えますか[] *?
ファイル名と一致するように、同様の正規表現
*:0以上の任意の文字
?:任意の文字と一致
[AZ]:文字の最初の出現のいずれかの文字セットと一致しました
4.コマンドを交換してください:$()または ``
別の変数に割り当てられたコマンドの結果
DATE = `date`或のDATE = $(日)
5.あるいは算術:$(())、$ []
BE = 45
$(($のVAR + 45))#90は、結果エコー$ [する$ VAR + 45]に相当するエコー
$ [ベース#のN]:前記ベースバンドを表し、nは説明に記載のベースバンドを表します
エコー$ [2#10 + 11]#10は、バイナリ2、プラス11を説明するために、結果は13であります
6.エスケープ文字:\
#\ファイルのタッチ\ $ \ \ $と呼ば作成\ $ \ $ \の\
-hello - タッチ./-helloまたはタッチ:_ファイルの最初に作成
継続的なライン:\ノックアウトラウンドの後ろ
7.単一引用符:文字リテラルを保持するための手段
8.二重引用符:拡張することができます
BE = 45
"$のVAR" #45の結果、エコー
エコー '$ VAR' の#$ VAR結果
9.試験条件:試験、[]
VAR = 2
結果は真、偽の表現1のように表現されている-gt 1#00テストの$ VAR
[$ VARの-gt 5]#1結果
一般的なテスト:
[-D DIR]#テストかディレクトリDIR
[-F FILE]#テストファイルFILEか
[-Z STRING]#テスト長さがゼロであるSTRING
[-N STRING]#ストリングテスト非ゼロ長さか
[STRING1 = STRING2]#テスト2つの文字列かどうか
[STRING1!= STRING2]#のテスト文字列異なります
[変数変数1 OP 2] #OPは(等しい)-eqできる、 - NE(等しくない)、 - LT(未満)、 - ル(以下)、 - GT(より大きい)、 - GE(以上)
!:非ロジック; -a:論理AND; -o:論理OR
10.分岐声明
支店の場合:
IF [-f〜/ .bashrcの];条件が満たされた場合#は、その後、次の文は、その後に行わ 。〜/ .bashrcに Fiの
-else支店の場合:
IF [-f / binに/ bashの] その後、エコー「/ binに/ bashがファイルである」#別々のステートメントにセミコロンを記述していない 他のエコー「はありませんが、ファイルである/ BNI / bashのを#elseのブランチ」 Fiの IF:;その後、エコー」真alwalysに" ; Fiの1行の#複数のステートメントはセミコロン、コロンを追加するには、Trueに等価であるか、常に真の意味
もし-else-IF支店:
エコー" それは朝であるyesと答えてください、あるいはまったく?。" 从屏幕中读取值存于变量中YES_OR_NO番号を読んで いる場合、[ " $のYES_OR_NO " = " はい" ];その後、 エコー" !おはようの" elifの[ " $ YES_OR_NO " = " なし" ];その後、 エコー" !午後グッディング" 他には エコー" 申し訳ありませんが、$ YES_OR_NO認識されないyesまたはnoを入力します。。」 出口1#のプログラムの終了コード Fiの 出口0#のプログラムの終了コード
&&と等価に-a同等..then場合
|| -oに相当し、その後同等でない場合
ケースの枝:
#!/ binに/ shの エコー" それは朝であるyesと答え、あるいはまったくしてください?。" 読みYES_OR_NO ケースを " $のYES_OR_NO " で はい |はい| Y | YES) エコー" グッディングモーニング!" ;; [nnは] * ) エコー" グッディングの午後に" ;; * ) エコー" 申し訳ありませんが、$ YES_OR_NO認識されていません。yesまたはnoを入力します。" 終了1 ;; ESACの 終了0
11.ループ:
whileループ:
エコー" パスワードを入力します。" TRYを読み ながら [ " $のTRY "!= " 秘密" ]; やる エコー「申し訳ありませんが、もう一度やり直してください」 TRY読ん 済
forループ:
用 FRUIT でリンゴバナナ梨。ん エコー「私は$ FRUITが好き」 行って