18のシェルスクリプト--009配列や文字列

レビュー:
機能:繰り返し使用と呼ばれるコードのブロックを書き込み、
1、関数書き込まフォーマット
2、関数名ができた後に直接添加したパラメータ、もし外部
ABC(){
関数本体する@ $
}
ABC 1 2 5. 4. 3
:WQの

a.sh. 1 5 4 3 2 6
。3、可変
ローカルローカル変数
ローカルI = 1
in vitroでの機能も同様の変数定義されている場合
エクステンション:ソース/ bashの/ chmodの+ Xのフルパス
[親と子プロセスを問題
4、復帰は
、関数本体の実行を終了
し、終了しないが
戻り、出口が正常に実行さ0の戻り値で指定されている、1〜255人の代表が失敗した
関数本体でのみ返す;
5、反復
反復タイムを初期値を参照するには!
n個!

N!= n(nは-1)!

事実(){
[$ 1 -lt 1 -o $ 1は0 -eq]ならば、
1エコー

エコー"$ [$ 1 * $(ファクト$ [$ 1-1])]"
Fiが
}
事実を100

1 2 3 4 5 6 7 8
1 2 3 5 8 13 21 34 ...斐波那锲数列
F(N)= F(N-1)+ F(N-2)

FAB(){
[$ 1 -eq 1]であれば、次に
1つのエコー
のelif [$ 1 -eq 2];次いで
1エコー

エコー"$ [$(FAB $ [$ 1-1])+ $(FAB $ [$ 1-2])]"
Fiを
}
FAB 100を

フォーク爆弾:
{()。
。。|&
}

(){| ..&}; [書き込む方法を他の言語フォーク爆弾に見えます]。

================================================== ========

文字列との配列
の配列
白が連続変数の期間、連続したメモリ・ストレージ・スペースのあるアレイの
ソリューション:あまりにも多くの変数の問題は、同じクラス変数に、我々は複数の名前を定義する必要がありますが、方法の配列にではありません(リスティング);上記で定義された
[1]卓=良い雲3 INSTITUTEた
1、配列名
2、指標
3の値

アレイ定義する方法:
DECLARE定義整数-iを(肯定)
-a定義アレイアレイDECLARE
DECLAREを-A定義されたネストされたアレイは
、良好なクラウドINSTITUTEた[1]プロクラウド=
雲プロ[1] =三回クラウド
雲3つクラスは、[1]卓=
[一般bashで使用されていない値のこのような配列、]
[Pythonとシェル]
配列=(値)
配列=()を

アレイを割り当てる方法:
配列=()
。[8] 1、配列は卓(コンピュータ言語、ゼロから、典型的には、インデックス数の)=
:キー値配列[卓] = 1.87メートル(必ずしもインデックス番号)
(シェルの配列割り当て、ジャンプすることができ(ジャンプ割当))
2、=配列(の/ var /)* /ログログ
製トラバース
配列=(ABCDE)
。3、=配列( '卓= 187' = 186 Lianghao天」...)
するリードコマンドで割り当てられた4、
『説明を指定』 -P -t遅延を読み取る-a可変目標値入力アレイは
-aabcde読み取ります

アレイを呼び出す方法:
$ {変数名}
のインデックスが定義されている$ {名前配列[インデックス]}は、インデックスが指定された値に対応する参照である
、好ましくは既定の配列インデックス値= 0 $アレイによって呼び出さ$ {名}(書かないでください)
$ {配列名[*]}または$ {配列名[@]}配列$ * $ @を内のすべてのコールの価値

行使下:統計情報もインデックスファイルに/var/log/*.logライン数;
=(/ varが/ / *ログをログ)
するためのIにおける{0..7};行い
IF [$ [$ I%2] -eq 0];次に、
線WC -l $ = ` {[$ I]} |カット-d '' -f1`
SUM = $ライン#+ + SUM = $ `-l WC {[$ I]} | -dカット'' -f1`#+ SUM = $を(WC $は{-l [$ I]} |カット-d '' -f1)
Fiの
DONE
ますecho $ SUM

。1、コールの配列の配列の長さ
の長さ)( "変数"
$ {#変数名[*]}または{#1 $変数名[@]}
2、特殊な配列値を追加
$ {変数名[$ {#変数名[@]}]} = "値"または$ {変数名[$ {#変数名[*]}] } =「値」


のアレイ上の他の操作
アレイスライス
オフセット:[@] $ {変数名}除去するために必要な値の数は
$ {〔*]をエコー:2:4}
$ {変数名は、[@]:オフセット}
の値を削除します
未設定の$ {変数名[インデックス]}
注:削除したインデックスの値ですが、インデックスが削除を取りません。
[インデックスを表示する方法、価値を知っていますか?]
の修正値
[3] = C
A [3] D =修飾即ちカバー


運動:
プリントの最大値が前記乱数10、生成
DECLAREは-AA
-i最大= 0を宣言

SEQ 0~9 ``に私のために、行う
[$ I] = $ RANDOM
[$ {[$ I]} - $最大GT] && $ =最大{[$ I]}
DONE
エコー$ {[@]は}
"$ maxの最大値を"エコー

10は、乱数を生成し、ソート


文字列:
==============================
のprintf
名=卓
hiagth = 183がある

のPython(%S、彼を上げました%d)が%(名前、hiaghtの )
出力:CHONG彼の上昇183

S%
%D
%F

%[NUM]ストリングSプレースホルダの幅指定
% -左の代わりに[NUM] S
[中心]

=============================

1、ストリングセクション:
スライスの配列:$ {変数名[@]:オフセット:値}の数
の文字列:$ {変数名:オフセット:値の数}
$ {変数名: -値の数} *注:コロンの後にスペースを追加してください*]
$ {変数名:-word}デフォルト割当手段
テスト:読み取り「sasasa」
[試験-Z $] && =テストABC
ストリングを取るモードに基づいて2、
左からと右から
最初の一致パターン文字列削除するために$ {変数名#pattern}
$を文字列に一致するすべてのパターンを削除する{変数名##パターン}

左から右から
$ {変数名パターン}%の
$ {変数名%%パターン}

思考:IP(ドメイン名)のURLを取り

、3文字を置き換える
$ {変数名/パターン/置換文字列}正規表現パターンではなく、ワイルドカードファイル]が
最初のパターンにマッチする、置き換えるために
$を{文字列変数名//パターン/交換が}の後に
、すべてのああパターンにマッチした、と置き換える
$ {文字列変数名/#パターン/交換}
行の先頭がパターンに一致しなければならない指定し、置き換えます
$ {変数名を/の/交換%のパターン文字列は}
置き換え、端線がパターンに一致しなければならない指定します

注:/セパレータ、置換されない(#1%他の特殊文字を、及びSED同じではありません)

4、検索して削除
削除するには、つまり、置換文字列を指定していない、代替を
$ {変数名/パターン}
$ {変数名パターン} //
$ {変数名/#パターン}
$ {変数名/%パターンを}

図5に示すように、交換用ケースは、
代替的に敏感TR
[:下部] [] TR [[:アッパー:] <ファイル名

$ {}文字列変数名^^すべて大文字置き換える
$ {}文字列変数名は,,すべて小文字を置き換えます

6、変数の代入
変数名1 = $ {変数名2:-word}スペースなし!アクションのデフォルト値を入力していない変数2つの値は、デフォルト値が変数ワード1に割り当てられる
変数名1 = $ {変数名2:+ワード}可変することなく使用し2の値を有する、デフォルト値は、ワードに割り当てられました1つの変数
$ {変数:=ワード}変数に値がない場合、変数ワードに割り当てされ、値が存在し、元の値
変数値が2で、出力されない場合、変数$ {変数1 = 2:?error_infor} erro_inforエラーメッセージ
[私が使用する方法がわかりませんか?]

7、ファイル内のスクリプトのアプリケーション他の変数、どのように達成するために?
ファイル名1
のVimファイル名1
A. 1 =
B = 2
:WQ

filename1.sh Vimの
ソース/フルパス/ファイル名//全体コードの実行/フルパス/ファイル名
C = $を[$する$ A + B]
EHCO $ C
:WQ

バッシュfilename1.shの

演習:レビュー、ホスト名、ホスト名= XXXファイル名を定義hostname.shの
ホスト名
名= TEST.COM

hostname.sh
IF [-R&LT /ルート/ホスト名];そして
/ルート/ホスト名。

エコー「/ルート/ hostnameは、実行権限を持っていない」
1番出口
Fiの

ホスト名$名

8、2つのコマンド
を/ tmp - mktempを一時ファイルやディレクトリの一時を作成し、
mktempの名前.XXXXXXは(XXは、乱数(文字と数字)を表している);すべてのファイル名が繰り返さ取る避けるために、
デフォルトで作成されたランダムなファイルで
作成され-dランダムなディレクトリ

ファイル= `mktempのa.XXXX`

コピーをインストールするか、ファイルを削除し、同じコピーを使用
ファイルをコピーするための権限を割り当てることができる利点を
使用法:ファイルディレクトリ// B bのコピーをディレクトリにファイルをintall、初期のパーミッション(ファイル:755内容量:644)に反応
為替の-tソースプロジェクト
-d作成
MODE -m
OWNERは-o
GROUPを-gを

運動:
1、このコマンドのすべてのライブラリーを得ることが依存リスト
LDD / binに/ CAT
2、指定した宛先ディレクトリに対応するパス(例えば、/ MNT / SYSROOT)へコピーコマンド
/ binに/ bashの/ MNT / SYSROOT / binに/ bashの
は/ usr / binに/ passwdの/ MTN / SYSROOTは/ usr / binに/ passwdの
。3、このコマンドにすべてのライブラリをコピー先のディレクトリに対応するパス依存
/ lib64に/ LD-linuxの-x86-64のを 。 so.2/mnt/sysroot/lib64/ld-linux-x86-64.so.2
各コピーコマンドの完了後、終了しますが、オーダーの新しいコピーを入力するようユーザーに促して、上記の機能を繰り返さないでください、ユーザーは、終了終了入るまで。

 

 


 

 

 

 

 

 


おすすめ

転載: www.cnblogs.com/wx00/p/11386659.html