はじめに: シェル プログラミングでは、選択と判断に加えて、ディレクトリ ファイルのトラバース、バッチでのユーザーの追加など、いくつかの特別な場合にループ操作が必要です。すべてループ操作が必要です。
1. for ループの基本形式
文法形式:
for 变量名 in 取值列表
do
命令
done
for ループの実行回数は、値リスト内の変数の数に依存します
for i in {
1..5};do echo $i;done
{
1..5}为取值范围1到5
echo $i 输出当前的取值
for((i=1;i<=5;i++));do echo $i;done
使用(())双括号,可以支持C语言的一些命令
i=1;i<=5;i++ #i初始值为1,如果i小于等于5时执行循环,每次循环后+1
for i in `seq 5`;do echo $i;done
seq 5 与{
1..5}效果一样
for i in `seq 5`;do echo "hello world";done
使用变量i 循环5次
每次执行echo "hello world"命令
for ループを使用して現在のディレクトリをトラバースする
2. for ループ スクリプト
for ループを使用して実装された単純なスクリプト
2.1 テストホストのステータス
LAN内のホストの生存状況を検知
#!/bin/bash
for IP in `cat /root/for/ip.txt` #ip文件为存放ip地址的
do
ping -c 3 -i 0.2 -w 3 $IP &>/dev/null #-c 3 ping3次主机 -i 0.2ping主机间隔 -w 3ping主机超时间隔
if [ $? -eq 0 ];then
echo "host $IP is up"
else echo "host $IP is down"
fi
done
2.2 ユーザーを追加する
for ループと if 条件ステートメントを使用して、バッチでユーザーを追加します
#!/bin/bash
for user in `cat /root/for/a.txt` #a.txt为存放用户名单文件
do
if grep $user /etc/passwd &>/dev/null; then #检查用户是否存在
echo "$user用户已经存在"
elif [ -d /home/$user ];then #检查home下是否存在和用户相同的目录
echo "$user用户存在宿主目录"
else useradd $user #添加用户并设置初始密码
echo "123456" |passwd --stdin $user &>/dev/null
echo "$user用户已经创建,初始密码为:123456"
fi
done
ユーザーステータスが存在または異常です
2.3 九九
for ループを使用して 99 の掛け算の表を出力します
#!/bin/bash
for ((i=1;i<=9;i++)) #此处也可以写 for i in {1..9}
do
for ((j=1;j<=i;j++)) #此处也可写 for j in `seq $i`
do echo -n -e "$j*$i=$[j*i]\t" #-n不换行输出;-e使用\转义符;\t横向制表;若不用-e,则\t为普通字符
done
echo
done
3. まとめ
1. for ループは実際の生成で多く使用され、何かに対する手動の繰り返し操作を回避します
2. for ループのリストは正規表現をサポートします
3. for ループで使用される (()) は、二重括弧内の C 言語をサポートします コマンド
4 . for ループ内の変数は、値リストの値を取得するためにループしているだけなので、値リストのパラメーターの数によってサイクル数が決まります。