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

Tags: