シェルスクリプトのループステートメントとエスケープ文字(for、while、untilの使用法と例)

シェルスクリプトのループステートメントとエスケープ文字

1つ、エスケープ文字

echo -n 表示不换行输出

echo -e 输出转义字符,将转义后的内容输出到屏幕上

常用的转义字符如下:
\b 转义后相当于按退格键(backspace),但前提是"\b"后面存在字符;"\b"表示删除前一个字符,"\b\b"表示删除前两个字符。

\c 不换行输出,在"\c"后面不存在字符的情况下,作用相当于 echo -n; 但是当"\c"后面仍然存在字符时,"\c"后面的字符将不会被输出。

\n 换行,被输出的字符从"\n"处开始另起一行。

\f 换行,但是换行后的新行的开头位置连接着上一行的行尾;

\v 与\f相同;

\t 转以后表示插入tab,即横向制表符;

\r 光标移至行首,但不换行,相当于使用"\r"以后的字符覆盖"\r"之前同等长度的字符;但是当"\r"后面不存在任何字符时,"\r"前面的字符不会被覆盖

\\ 表示插入"\"本身;

2、forループステートメント

ここに画像の説明を挿入します

for 变量 in 取值列表
do
命令
done

例:1から100までの整数の合計

ここに画像の説明を挿入します
ここに画像の説明を挿入します

例:1から100までのすべての整数の奇数と偶数をフィルタリングします

ここに画像の説明を挿入します
ここに画像の説明を挿入します

例:100未満の整数を入力するようにユーザーに促し、1からこの数値までのすべての整数の合計を計算します

ここに画像の説明を挿入します
ここに画像の説明を挿入します
④1から100までのすべての整数の偶数と奇数の合計を求めます
ここに画像の説明を挿入します
ここに画像の説明を挿入します

例:指定された範囲のホストが通信しているかどうかを検出し、通信しているホストIPをファイルhost_ipに出力します

ここに画像の説明を挿入します
ここに画像の説明を挿入します

例:/ devディレクトリ内のすべての実行可能ファイルを出力します

ここに画像の説明を挿入します
ここに画像の説明を挿入します

3、whileループステートメント

ここに画像の説明を挿入します

while 条件
do
命令
done

例:1から100までのすべての整数の合計を計算します

ここに画像の説明を挿入します
ここに画像の説明を挿入します

例:1から100までのすべての整数の奇数と偶数を除外します

ここに画像の説明を挿入します
ここに画像の説明を挿入します

例:100未満の整数を入力するようにユーザーに促し、1からこの数値までのすべての整数の合計を計算します

ここに画像の説明を挿入します
ここに画像の説明を挿入します

例:1から100までのすべての整数の偶数と奇数の合計を求めます

ここに画像の説明を挿入しますここに画像の説明を挿入します

例:指定された範囲のホストが通信しているかどうかを検出し、通信しているホストIPをファイルhost_ipに出力します

ここに画像の説明を挿入します

ここに画像の説明を挿入します

例:ユーザーをバッチで追加します。ユーザー名はstuで始まり、番号順に番号が付けられます。

合計20人のユーザーが追加され
ます。つまり、stu1、stu2、...、stu20の初期パスワードはすべて123456に設定されます。
ここに画像の説明を挿入します

例:商品価格ゲームを推測する;変数RANDOMを介して乱数を取得する;回数を推測して記録するようにユーザーに促し、推測が成功したらループを終了する

ここに画像の説明を挿入します
ここに画像の説明を挿入します

4、untilループステートメント

ここに画像の説明を挿入します

条件がfalseになるまでdoステートメントを実行します

until 不成立的条件
	do
	done

例:1〜50の合計を計算します

ここに画像の説明を挿入します
ここに画像の説明を挿入します

5、ループブレークを終了して続行します

for ((a=1; a<=5;a++))
do
       echo "外循环第$i次"
       if [  $a -eq 3 ];then
            break
        fi
        for ((b=1; b<=5;b++))
        do
        echo "内循环第$b次"
        if [$b -eq 3 ];then
            break
        fi
       done
done

ここに画像の説明を挿入します
ここに画像の説明を挿入します
ブレイク22層ループからのブレイク

続行:ループ内のコマンドを中止しますが、コマンド全体を完全に中止するわけではありません

#!/bin/bash
for ((a=1; a<=15; a++))
do
	if [ $a -gt 5 ] && [ $a -lt 10 ]
	then
		continue
	fi
	echo "current value: $a"
done

ここに画像の説明を挿入します
ここに画像の説明を挿入します

6、IFSフィールドセパレータ

默认包含 空格,制表符,换行符
查看命令:set | grep IFS
IFS=$' \t\n'

修改成只换行
IFS=$'\n'

IFS=:
IFS=','

IFS.OLD=$IFS
IFS=$'\n'
...
IFS=$IFS.OLD

输出环境变量PATH所包含的所有目录以及其中的所有可执行文件

おすすめ

転載: blog.csdn.net/IHBOS/article/details/114392898
おすすめ