カタログタイトル
エコーパラメータ
-
echo -n#は改行出力がないことを意味します
-
echo -eエスケープ文字を出力し、エスケープされたコンテンツを画面に出力します(二重引用符で使用する必要があります)
-
一般的に使用されるエスケープ文字は次のとおりです。
\b
\c
\n
\f
\v
\t
\r
\\
-
\ b:エスケープした後、バックスペースキー(バックスペース)を押すのと同じですが、「\ b」の後に文字がある場合のみ:「\ b」は前の文字を削除することを意味し、「\ b \ b」は最初の2文字
-
\ c:改行なしで出力。「\ c」の後に文字がない場合、関数はecho -nと同等ですが、「\ c」の後に文字が残っている場合、「\ c」の後の文字はそうではありません。出力
-
\ n:改行、出力される文字は「\ n」からの改行で始まります。Linuxでは、\ nはキャリッジリターンの意味を持ちます
-
\ f:改行ですが、改行の後の新しい行の先頭が前の行の末尾に接続されています
-
\ v:\ fと同じ
-
\ t:エスケープした後、タブ、つまり水平タブを挿入することを意味します
-
\ r:カーソルは行の先頭に移動しますが、折り返されません。これは、「\ r」の後の文字を使用して、「\ r」の前の同じ長さの文字を上書きするのと同じですが、文字がない場合です。 「\ r」の後、「\ r」「前の文字は上書きされません
-
\\:「\」自体を挿入することを意味します
-
ループステートメント
forループステートメント
- 異なる変数値を読み取って、同じコマンドのセットを1つずつ実行します(まとめてトラバーサル操作と呼ばれます)
- フォーマット
for 变量名 in 取值列表
do
命令序列
done
-
最も単純なforループの例
- 発現の最初の方法:でI {1 ... 10} -でI {1 ... 10 ... 2}反復的に各ループの後に2を加算し2つの手段
- 式の2番目の方法:私は$(配列1〜10)に-私は$(配列1 2 10)に上記と同じ意味を持っています
- 3番目の表現方法:(i = 1; i <10; i ++) - (i = 1; i <= 10; i + = 2)上記と同じ意味
- 発現の最初の方法:でI {1 ... 10} -でI {1 ... 10 ... 2}反復的に各ループの後に2を加算し2つの手段
-
ライブ学習とアプリケーションの例1
ユーザーをバッチで追加します。ユーザー名はusers.txtファイルに保存され、各行で、初期パスワードは123456に設定されます。
-
ライブ学習の例
2IPアドレスに基づいてホストのステータスを確認します。IPアドレスはipadds.txtファイルに1行に1つずつ保存されます。pingコマンドを使用して、各ホストの接続を確認します。
whileループステートメント
- 特定の条件を繰り返しテストし、条件が真である限り繰り返し実行します
- フォーマット
while 条件测试操作
do
命令序列
done
- 簡単な操作(出力コンテンツへの反復の挿入位置には一定の関係があります)
- whileステートメントの適用例
1.ユーザーをバッチで追加する:ユーザー名はstuで始まり、番号順に番号が付けられている必要があります。合計20、つまりstu1 ... stu20があり、パスワードは123456に設定されています。
- アップグレードの難しさ
2.商品価格ゲームを推測する:変数RANDOMを介して乱数を取得し、ユーザーに回数を推測して記録するように促し、推測後にループを終了します。 - RANDOMは0から32767までのランダムな値をランダムに取得できます
- 0〜25の範囲の数値を生成する場合:
$(($RANDOM%26))
- 1〜68の範囲の数値を取得する場合:
$(($RANDOM%68+1 ))
- 6〜87の範囲の数値を取得する場合:
$(($RANDOM%82+6 ))
ループステートメントまで
- 特定の条件を繰り返しテストし、条件が確立されない限り繰り返し実行します
- whileと順番にwhileと同等で、少し味がないように見えるまで
until 条件测试操作
do
命令序列
done
- 簡単な操作まで
- untilステートメント
1のいくつかの例。1から50までの合計値を計算し、ループ累積によって計算します。
ループから抜け出す
- ブレーク:ブレークを含むループからジャンプします
- シンプルなダブルループ
- 内側のループの単層ループから飛び出します
- ブレークはシーケンシャルです
- ブレーク2:ループの2番目のレイヤーからジャンプした後の数は、ループから外れたレイヤーの数であることを意味します
単一のループを中止し続ける
- 続行:ループ内のコマンドを中止しますが、コマンド全体を完全に停止するわけではありません
- whileループで
continueを使用することはお勧めしません。#Continueはwhileで使用されます。現時点では、反復コードの位置は非常に重要であり、コード全体の結果に影響します。
IFSフィールドセパレータ
- IFSフィールドセパレータに
は、デフォルトでスペース、タブ、および改行が含まれます\t
\n
users.txtで編集されたコンテンツにスペースがある場合
-
IFS=$' \t\n'
- IFS
IFS=$'\n'
#の変数を再定義して、改行文字のみを認識することができます。 - IFSの変更やその他の操作を行った後、スペースを認識できない場合はどうすればよいですか?
IFS=$'\n' #进行重新定义变量IFS只识别换行符
OLDIFS=$' \t\n' #重新定义之前的内容
.......
IFS=$OLDIFS #把定义的变量重新定义给IFS