シェル-07文字列の配列を持ちます
配列
アレイ白は連続変数の期間、連続したメモリ・ストレージ・スペースであること
解像度:過度の変数の問題;同じの変数は、我々は複数の名前を定義する必要がありますが、定義する方法の配列ではありません。(リスト)
配列名インデックス
配列を定義する方法:
-iを整数(ステートメント)に定義された宣言
-a定義配列の配列を宣言
ネストされた配列に定義宣言-A
クラスは良い雲だった[1] =クラウドは、[1]クラウド3つのクラス= [1] = XX
[一般bashで使用されていない値のようなデータセット]
[Pythonとシェル]
アレイ= 1
どのように配列の割り当てに:
アレイ=()
- 配列[0] =(コンピュータ言語で、一般的にインデックスは0から始まる、インデックス番号は、必ずしもではない:キー値配列[A] = 1;配列割り当てにおけるシェルがホップすることができる - ホップ割当て)
- 各ファイルの列=(は/ var / log / *。ログ)-----は、配列値に対応します
アレイ=(ABCD)
- アレイ=(A '= 187'c =' 188'b = '170')
- リードコマンドを経由して割り当て
-t 1 -a可変目標値入力配列を読み取る-p説明指定された遅延
-aabcde読みます
どのような機能の移転:
} $ {変数名
インデックスが定義されている{$アレイ名[インデックス]}は、インデックスの値が指定された対応する確認することです
$ {名前} $列0のデフォルトの呼び出し配列インデックス=値(最高書きません)
{$配列名[*]}または{$配列名[@]}アレイコールのすべての値
演習:
/Var/log/*.log統計行数、インデックスファイルの偶数であると
トイレ-l /var/log/*.log
A =(は/ var / log / *。ログ)
-Iライン= 0を宣言
宣言-I合計= 0
合計= 0
I {0..7}にするため、行います
もし[$ [$ I%2] -eq 0]
ライン= `トイレ-l $ {[$ i]は} | -d「」-f1`をカット
合計=合計+ $ライン
されます
完了
エコー$和
配列arrayの長さを呼び出します。
変数名$ {#[*]}または{#$変数名[@]}
特別な方法値の配列を追加します。
$ {変数名[$ {#変数名[@]}]} = "値" 変数または$ {名[$ {#変数名[*]}]} = "値"
他の操作の配列について:
スライス配列:$ {変数名[@]:オフセット:削除する必要がある値の数}
A =(は/ var / log / *。ログ)
エコー$ {[*]:2:4}
$ {変数名[@]:オフセット}
解除$ {変数名[インデックス]}:値の配列を削除します
削除インデックスが削除されていないと、インデックスの値です。
[インデックスを表示する方法、価値を知っていますか?]
変更されたカバレッジ:値を変更します。
[3] [3] = 2、C =
演習:
- 10は、乱数、最大印刷の特徴値を生成します
#!/ binに/ bashの
-aa宣言
-i最大を宣言= 0
私のseq 0 9` `中のため、やります
[$ i]を= $ RANDOM
[$ {[$ i]は} -gtの$最大] &&最大= $ {[$ i]は}
完了
$ {[@]}エコー
$ maxのエコー
- そして、ランダムに生成された数十人を並べ替え
文字列:
printf関数---フォーマットされた出力
NAME = zqq高い= 180
Pythonのプリント(%sは、%d)は%(名前、高いです)
プレースホルダ----%sの%D%F
文字列のプレースホルダの幅を指定%[数字]の
% - [NUM]の左指定
左アライメント%の-10sを表します
%20dの20文字が右に揃え
小数点以下の桁代表した後、%-10.1f
printfの "%-10s%-10s%-10s \ n" はありません名前身長
printfの "%-10s%-10s%-10D \ n" は1 zqq 180
printfの "%-10s%-10s%-10D \ n" は2 QQQ 190
printfの "%-10s%-10s%-10f \ n" は3 WWW 188.11
文字列のセクション:
スライス配列:$ {変数名[]:オフセット:値の数}
スライスの文字列:$ {変数名:オフセット:値の数} - タンジェント
$ {変数名: - 値の数} - 反切スペースコロンの後に
$ {変数名:-word} - 意味のデフォルトの割り当て
「sasasa」のテストを読んで
[-z $試験] &&テスト= 123
モードに基づいて部分文字列を取ります:
右から左へ
$ {テスト#パターン}された最初の文字列にマッチするパターンを削除します
$ {テストパターン##}がすべての文字列を削除するためのパターンと一致します
[ルート@ localhostの〜]#A = 123qwe123wsx
[ルート@ localhostの〜]#B = $ {#* 1} -------- 1を除去しました
[ルート@ localhostの〜]#エコー$ bの
23qwe123wsx
[ルート@ localhostの〜]#Aを=は/ var / log /アナコンダ/ anaconda.log / 16.sh
#1 B = {## * /} $ [ルート@ localhostのは〜]
[ルート@ localhostの〜]#エコー$ bの
16.sh
[ルート@ localhostの〜]#Aを=は/ var / log /アナコンダ/ anaconda.log / 16.sh
[ルート@ localhostの〜]#B =の$ {#1 * /}
[ルート@ localhostの〜]#エコー$ bの
VAR /ログ/アナコンダ/ anaconda.log / 16.sh
[ルート@ localhostの〜]#のURL =のhttp://192.168.72.100:8080
[ルート@ localhostの〜]#bの= $ {URL ## *:}
[ルート@ localhostの〜]#エコー$ bの
8080
左から右へ
$ {変数名%パターン}
$ {変数名%%パターン}
[ルート@ localhostの〜]#のURL =のhttp://192.168.72.100:8080
[ルート@ localhostのは〜]#は、$エコー{URLの%を:*}
http://192.168.72.100
[ルート@ localhostのは〜]#は、{%% URLを:*} $をエコー
HTTP
[ルート@ localhostの〜]#のURL =のhttp://192.168.72.100:8080
[ルート@ localhostの〜]#URL1 = $ {URLの#* //}
[ルート@ localhostの〜]#URL2 = $ {URL1%:*}
[ルート@ localhostの〜]#エコーの$ URL2
192.168.72.100
文字の置換:
$ {文字列変数名/パターン/交換}
第1のパターンマッチングは、[、]正規表現パターンにより置換されていないワイルドカードファイルであります
[ルート@ localhostの〜]#のURL =のhttp://192.168.72.100:8080
[ルート@ localhostのは〜]#は、{URL / 192.168 / 10.6} $をエコー
http://10.6.72.100:8080
[ルート@ localhostの〜]#のURL =のhttp://192.168.72.100:8080
[ルート@ localhostのは〜]#は$エコー{URL / [1-9] *。*。*。* [0-9] /www.baidu.com}
http://www.baidu.com
$ {変数名//パターン/置換文字列}
すべてのパターンの試合、と交換してください
$ {文字列変数名/#パターン/交換}
パターンは最初の行でなければなりません指定します
[ルート@ localhostの〜]#のA = `猫/ etc / passwdファイル| grepをroot`
[ルート@ localhostの〜]#エコーの$ A
ルートX:0:0:ルート:/ルート:/ binに/ bashのオペレータX:11:0:演算子:/ルート:/ sbinに/ NOLOGIN
[ルート@ localhostのは〜]#は、$ {/#ルート/ルーターを}エコー
ルーターX:0:0:ルート:/ルート:/ binに/ bashのオペレータX:11:0:演算子:/ルート:/ sbinに/ NOLOGIN
[ルート@ localhostが〜]#は、$ {/#のR ?? T /ルーターを}エコー
ルーターX:0:0:ルート:/ルート:/ binに/ bashのオペレータX:11:0:演算子:/ルート:/ sbinに/ NOLOGIN
#は、$ {/ \ / binに\ / bashを// sbinに\ / nologinにする}エコー[ルート@ localhostの〜]
ルートX:0:0:ルート:/ルート:/ sbinに/ NOLOGINオペレータX:11:0:演算子:/ルート:/ sbinに/ NOLOGIN
$ {文字列変数名/%パターン/交換}
行の最後には、パターンの前に交換する必要があります指定します
[ルート@ localhostの〜]#のA = `猫/ etc / passwdファイル| grepをroot`
#は、$ {/%\ /?binに\ / * / AAAを}エコー[ルート@ localhostの〜]
ルートX:0:0:ルート:/ルート:/ binに/ bashのオペレータX:11:0:演算子:/ルート:AAA
[ルート@ localhostの〜]#エコーの$ A
ルートX:0:0:ルート:/ルート:/ binに/ bashのオペレータX:11:0:演算子:/ルート:/ sbinに/ NOLOGIN
/交換しないセパレータ、(#%、他の特殊文字を、異なるSED)
検索と削除
交換、置換文字列が指定されていない場合、削除されなければなりません
$ {変数名/パターン}
[ルート@ localhostの〜]#のA = `猫/ etc / passwdファイル| grepをroot`
[ルート@ localhostの〜]#エコーの$ A
ルートX:0:0:ルート:/ルート:/ binに/ bashのオペレータX:11:0:演算子:/ルート:/ sbinに/ NOLOGIN
#は$ {/%演算子* nを/}エコー[ルート@を〜ローカルホスト]
ルート:X:0:0:ルート:/ルート:/ binに/ bashの
$ {変数名//パターン}
$ {変数名/#パターン}
$ {変数名/%パターン}
ケースを交換してください:
TRの交換用ケース
TR [[下部:]] [[:アッパー:] <ファイル名
$ {変数名} --- ^^資本を交換します
{,,} $ ----置き換え変数名を小文字
TRの[下部:] [:アッパー:</ etc / passwdファイル
[ルート@ localhostの〜]#A = $(猫/ etc / passwdファイル|ヘッド-1)
[ルート@ localhostの〜]#エコーの$ A
ルート:X:0:0:ルート:/ルート:/ binに/ bashの
[ルート@ localhostのは〜]#は、$ {^^}をエコー
ROOT:X:0:0:ROOT:/ ROOT:/ BIN / BASH
= $ {^^} B [ルート@ localhostの〜]#
[ルート@ localhostの〜]#エコー$ bの
ROOT:X:0:0:ROOT:/ ROOT:/ BIN / BASH
[ルート@ localhostのは〜]#は、{,, B} $をエコー
ルート:X:0:0:ルート:/ルート:/ binに/ bashの
変数の割り当て:
1変数名= $ {変数名2:-word}スペースはありません!!!
アクションのデフォルト値ではなく、変数2つの値、変数ワード1に割り当てられたデフォルト値を入力します。
[ルート@ localhostの〜]#エコー$ bの
ROOT:X:0:0:ROOT:/ ROOT:/ BIN / BASH
[ルート@ localhostの〜]#C = $ {B:-qaz}
[ルート@ localhostの〜]#エコー$ bの
ROOT:X:0:0:ROOT:/ ROOT:/ BIN / BASH
[ルート@ localhostの〜]#エコーの$ C
ROOT:X:0:0:ROOT:/ ROOT:/ BIN / BASH
[ルート@ localhostの〜]#電子= $ {F:-qaz}
[ルート@ localhostの〜]#エコーの$ F
[ルート@ localhostの〜]#エコー$電子
ガス
1つの$ {変数名=変数名2:+ワード}珍しいです
変数値の場合には2、変数1に割り当てられた唯一の単語のデフォルト値
[ルート@ localhostの〜]#hを= 1
[ルート@ localhostの〜]#エコー$ hを
1
[ルート@ localhostの〜]#G = $ {H:+のQQQ}
[ルート@ localhostの〜]#エコー$ gを
QQQ
[ルート@ localhostの〜]#エコー$ hを
1
$ {変数2 =ワード}
変数に値がない場合は、それはワード変数に代入される値、使用の元の値を持っています
1変数名= $ {変数2:?ERROR_INFO}
変数の値は、出力誤差2でない場合error_infor
スクリプトは、達成するためにファイルにどのように他の変数を参照しますか?
ファイル名1
Vimのファイル名1
A = 1
B = 2
:WQ
Vimのfilename1.sh
./完全パス/ファイル名れるソース/フルパス/ファイル名
C = $ [$ +する$ B]
エコー$ C
バッシュfilename1.sh
演習:
変更されたホスト名、hastnameファイル名を定義する= xxxは、hostname.sh
二つのコマンド:
mktempのは一時的なファイルやディレクトリを作成するためにtemp-- / tmpに
あなたは、重複したファイル名を避けるために取得します。mktempの名前.XXXXXX(XXは、乱数、ランダムな文字と数字を表します)
デフォルトでは、ランダムなファイルを作成することです
-dは、ランダムにディレクトリを作成しています
ファイル= `mktempのa.XXX`
コピーをインストールし、削除したファイルは、同じCPを使用します
長所:あなたは、ファイルをコピーする権限を指定することができます
使用方法:ディレクトリにファイルをコピーした//ディレクトリのファイルb bをintall、初期パーミッション(ファイルディレクトリ755 644)を復元取引所にディレクトリを作成するには、-dソースプロジェクトは、パーミッション(マスク)を指定-m -t -o -g指定されたグループが属します所有グループを指定します。
演習:
LDDすべて表示ライブラリプログラム
ディレクトリを作成します
chrootのスイッチングシステムのルート
/ - は/ dev / sda1を
元のオペレーティングシステムのシェルプログラムは、1に新しいディレクトリに切り替え、その後、このディレクトリに必要な適切なブートプログラムファイルを配置します。
コマンドのフルパスを削除する方法
--- lddはライブラリの読み方
ターゲットディレクトリにLDDライブラリファイルによって読み出さコピーする方法
どんなに上書きする必要がありますか
拡張:
仮想化の準備ができて知識:システムの原理を開始
読取システム - ディスクをお読みください。事前にドライバディスクをロードする必要があること
仮想ルート(IMG仮想ルートファイルRAMディスク)をマウント
仮想ルートファイル後にディスクドライブをロードgrub1.5にハングアップします。
アッパーディスク上のRAMディスクへのchrootの一時的な「ルート」スイッチにより、
オペレーティングシステム:vmlinuzをカーネル、ramdisk.img