免責事項:この記事はブロガーオリジナル記事です、続くBY-SAのCC 4.0を著作権契約、複製、元のソースのリンクと、この文を添付してください。
forループA
语法
for 变量名 in 变量取值列表
do
指令…
done
説明:この構造では、「変数リストの値が」省略することができ、Iに対応する省略されている N- $ @、私は$に私のために使用することと等価であるために使用さ@
考える:変数リストを理解するためにどのように?
ファイル、IPアドレス、コンテンツやその他のファイルのリスト!
#!/bin/bash
#for i in 0 1 2 3 4 5 # (1)直接列出来-->序列
#for i in {0..5} # (2)使用{}的等价方式!
for i in `seq 5` # (3)命令的输出作为列表
#for i in `ls` # 查看文件的内容
do
echo $i
done
思考:より多くの研究では、より簡易なアイデア!
要件1:一列の4つの各
# 产生{1.10}
seq 10 > a.log
[root@random mnt]# cat a.log |xargs -n4
1 2 3 4
5 6 7 8
9 10
# 专业-->简化的方式!
[root@random mnt]# xargs -n4 < a.log
1 2 3 4
5 6 7 8
9 10
ループ2、C言語タイプ
for((exp1;exp2;exp3))
do
指令...
done
要件2:バッチ番号、すぐに10を生成します
#!/bin/bash
for((i=1;i<=10;i++))
do
mkdir -p ./test
touch ./test/`echo $RANDOM|md5sum|cut -c 1-8`_finished.jpg
done
デマンド3:バッチファイル名を変更します。
#!/bin/bash
# 思路:把要改的名字凭借出来!
for i in `ls /root/test`
do
cd /mnt/test
# 核心是要改成什么名字
mv $i `echo $i|sed 's#_finished.jpg#.html#g'` # sed对应的模式-->对应的文件名字
done
# 不用rename、awk、sed、只用for循环!
他の同等の方法を追加しました:
# echo $file | sed 's#_finished.html#jpg#g' -->方法1
# 通过_作为分割符号,分成两个部分-->注意:空格
# $0表示该行、$1表示_前面的部分,通过bash来执行!
ls|awk -F '[_]' '{print "mv " $0,$1".html"}'|bash
# 比较专业的
rename "_finished.html" ".jpg" *.html
# 说明:rename "改什么" "改成什么" 对谁进行修改
# for循环就是重复-->要先搞定一个!
要件4:ループ1 + 2 + 3 + ... + 100
#!/bin/bash
for ((i=1;i<=100;i++))
do
((sum+=$i))
done
echo "sum=${sum}"
同等の配列は、変数のリストを生成し、
#!/bin/bash
for i in `seq 100`
do
let sum+=i
done
echo "sum=${sum}"
知識の分解:背中、残りはアップになります!
2サイクルのプロセス制御キーワード
ブレークは、出口のリターンを継続对比
break、continue、exit一般用于循环结构中控制循环(for、while、if)的走向
break n:n表示跳出循环的层数,如果省略n表示跳出"整个循环"
continue n:n表示退到第n层继续循环,如果省略n表示跳过本次循环,"忽略本次"循环的剩余代码,进入循环的下一次循环
exit n:退出"当前shell程序"(脚步),n为返回值。n也可以省略,再下一个shell里通过$?接收这个n值
return n:用于在函数里,作为"函数的返回值",用于判断函数执行是否正确,推出shell程序的对应函数
演習1
#!/bin/bash
for((i=0;i<=5;i++))
do
if [ $i -eq 3 ];then
#continue
#break
exit
fi
echo $i
done
echo "ok"
# 体会这三者的含义
フォローアップサプリメント