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

forループステートメント

  • forステートメントは、変数と値のリストを定義し、異なる値に従って同じコマンドを実行し、変数値が使い果たされていることを認識する必要があります。
  • 値リストには、IPアドレス、アドレス帳など、同じ属性を持つ複数のオブジェクトが含まれています。
#for语句结构
for 变量名 in 取值列表
do
  命令序列
done

例:1〜100の合計を求めます。

vim he.sh
#!/bin/bash
sum=0
for i in {1..100}
do
   sum=$[$i+$sum]
done
echo "0-100的和为:" $sum

ここに画像の説明を挿入します
試験結果:
ここに画像の説明を挿入します

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

vim 3.sh
#!/bin/bash
read -p "请输入一个小于100的整数: " n
sum=0
for ((i=1;i<=n;i++))
do
  sum=$[$i+$sum]
done
  echo "从1到到该数之间所有整数的和为: " $sum

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

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

whileループステートメント

  • 一連のコマンドは、条件が満たされないまで、特定の条件に従って繰り返し実行されます。
  • これが起こらないようにするために、書き込み時に無限ループが発生する可能性があります
  • true(true)およびfalse(false)は特別な条件テスト操作であり、ifステートメントの条件テストでも使用できます。
    trueを条件として使用する場合、条件は常に無限に確立および実行されることを意味します。つまり、無限ループです。falseを
    条件として強制的に終了する必要がある場合は、条件が確立されておらず、コマンドシーケンスは実行されません。
#while语句结构
while 条件测试操作
do
  命令序列
done

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

vim w1.sh
#!/bin/bash
sum=0
shu=1

while [ $shu -le 100 ]
do
  sum=$[$sum+$shu]
  let shu++
done
  echo "和为: " $sum

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

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

vim c.sh
price=$[$RANDOM % 1000]
a=0
num=0
echo "猜猜商品价格是多少"
while [ $a -eq 0 ]
do
let num++
read -p "请输入你猜的价格:" b
if [ $b -eq $price ];then
echo "恭喜,你猜对了!"
let a++

elif [ $b -gt $price ];then
 echo "你猜大了!"

elif [ $b -lt $price ];then
 echo "你猜小了!"
fi
done
echo "你总共猜了 $num 次。"

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

ループステートメントまで

  • whileとは逆に、特定の条件を繰り返しテストし、条件が確立されない限り繰り返し実行します。
  • 一般的には上手に使えますが、めったに使われません。

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

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

ループを終了します----中断して続行します

単一のループから抜け出す

vim break.sh
#!/bin/bash
for i in $(seq 1 10)
do
   if [[ $i == 3 ]];then
    echo "yes"
    break
else
    echo "no"
    sleep 1
fi
done

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

続行コマンドは、すべてのループからジャンプするのではなく、現在のループからジャンプするだけです。

vim con.sh
#!/bin/bash
for i in $(seq 1 10)
do
  if [[ $i == 3 ]];then
    echo "yes"
    continue
  else

    sleep 1
  fi
  echo $i
done

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

IFSフィールドセパレータ

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

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

IFS=:
IFS=','

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

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

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

エスケープ文字

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"前面的字符不会被覆盖

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

例:

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

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

おすすめ

転載: blog.csdn.net/shengmodizu/article/details/114375108