shell入門系列(8)for
- 2019 年 10 月 4 日
- 筆記
title: shell入門系列(8)for date: 2019-01-16 10:00:00 +0800 update: 2019-01-16 10:00:00 +0800 author: me cover: http://ww1.sinaimg.cn/large/006jIRTegy1fz8sbu1674j31kw0w0wn3.jpg preview: Shell本身是一個用 C 語言編寫的程式,它是用戶使用 Linux 的橋樑,用戶的大部分工作都是通過 Shell 完成 tags:
- shell系列
文章目錄

shell入門系列(8)for
簡介
- 和C語言一樣的for循環
- 處理列表數據的for循環 處理數字序列 處理字元序列 處理文本字元串
入門小案例
c語言的for
#! /bin/bash declare -i i s for((i=1;i<=10;i++)) do echo $i done

循環列表(數組)中的數據
處理文本字元串
默認是以 空格,換行符,製表符作為 分隔符
可以重新自定義分隔符,設置 IFS 即可,記得用完要設置回來
data="name,sex,rollno,location" oldIFS=$IFS IFS="," for item in $data do echo $item done; IFS=$oldIFS

以 : 為分隔符
line="root:x:0:0:root:/root:/bin/bash" oldIFS=$IFS; IFS=":"; count=0 for item in $line; do [ $count -eq 0 ] && user=$item [ $count -eq 6 ] && shell=$item let count++ done; IFS=$oldIFS; echo $user 's shell is $shell;

處理數字序列
剛剛說了,默認是以空格為分隔符,可以自定義的,這裡使用默認的
for i in 1 2 3 4 5 do echo $i done

另一種寫法
for i in {10..20} do echo $i done
處理字元序列
for c in {a..h} do echo $c done
與其他命令混合使用
這裡可以與 ls 混合使用
DIR="/root" for f in $(ls $DIR) do echo $f done

複雜一點,循環文件,並把文件夾的佔用空間輸出
DIR="/root" cd $DIR for f in $(ls $DIR) do [ -d $f ] && du -s $f done
