A. shell里的for循環怎麼寫
for循環的運作方式,是講串列的元素意義取出,依序放入指定的變數中,然後重復執行含括的命令區域(在do和done 之間),直到所有元素取盡為止。
其中,串列是一些字元串的組合,彼此用$IFS所定義的分隔符(如空格符)隔開,這些字元串稱為欄位。
for的語法結構如下:
1
2
3
4
for 變數 in 串列
do
執行命令
done
說明:
行1,講串列中的欄位迭代放入變數中
行2-4,接著將重復執行do和done之間的命令區域,直到串列中每一個欄位軍處理過為止。
流程圖:
用例1
用for循環在家目錄下創建aaa1-aaa10,然後在aaa1-aaa10創建bbb1-bbb10的目錄
1
2
3
4
5
6
7
8
9
10
11
12
#!/bin/bash
for k in $( seq 1 10 )
do
mkdir /home/kuangl/aaa${k}
cd /home/kuangl/aaa${k}
for l in $( seq 1 10 )
do
mkdir bbb${l}
cd /home/kuangl/aaa${k}
done
cd ..
done
說明:
行2,seq 用於產生從某個數到另外一個數之間的所有整數。
行4,在家目錄下創建文件夾。
行6,在使用一個for循環創建文件夾
測試結果:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
[root@test01 kuangl]# ll
total 80
drwxr-xr-x 12 root root 4096 Jul 20 01:23 aaa1
drwxr-xr-x 12 root root 4096 Jul 20 01:23 aaa10
drwxr-xr-x 12 root root 4096 Jul 20 01:23 aaa2
drwxr-xr-x 12 root root 4096 Jul 20 01:23 aaa3
drwxr-xr-x 12 root root 4096 Jul 20 01:23 aaa4
drwxr-xr-x 12 root root 4096 Jul 20 01:23 aaa5
drwxr-xr-x 12 root root 4096 Jul 20 01:23 aaa6
drwxr-xr-x 12 root root 4096 Jul 20 01:23 aaa7
drwxr-xr-x 12 root root 4096 Jul 20 01:23 aaa8
drwxr-xr-x 12 root root 4096 Jul 20 01:23 aaa9
[root@test01 kuangl]# cd aaa1
[root@test01 aaa1]# ll
total 40
drwxr-xr-x 2 root root 4096 Jul 20 01:23 bbb1
drwxr-xr-x 2 root root 4096 Jul 20 01:23 bbb10
drwxr-xr-x 2 root root 4096 Jul 20 01:23 bbb2
drwxr-xr-x 2 root root 4096 Jul 20 01:23 bbb3
drwxr-xr-x 2 root root 4096 Jul 20 01:23 bbb4
drwxr-xr-x 2 root root 4096 Jul 20 01:23 bbb5
drwxr-xr-x 2 root root 4096 Jul 20 01:23 bbb6
drwxr-xr-x 2 root root 4096 Jul 20 01:23 bbb7
drwxr-xr-x 2 root root 4096 Jul 20 01:23 bbb8
drwxr-xr-x 2 root root 4096 Jul 20 01:23 bbb9
1
用例2
列出var目錄下各子目錄佔用磁碟空間的大小。
1
2
3
4
5
6
7
#!/bin/bash
DIR="/var"
cd $DIR
for k in $(ls $DIR)
do
[ -d $k ] && -sh $k
done
說明:
行4,對/var目錄中每一個文件,進行for循環處理。
行6,如果/var下的文件是目錄,則使用 -sh計算該目錄佔用磁碟空間的大小。
測試結果:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[root@test01 scripts]# ./var.sh
276M cache
4.0K cvs
84K db
8.0K empty
4.0K ftp
4.0K games
4.0K gdm
21G lib
4.0K local
16K lock
7.4G log
4.0K logs
0 mail
4.0K nis
4.0K opt
4.0K preserve
336K run
3.7G spool
212K tmp
4.1G www
4.0K yp
B. shell編程中的for循環如何實現
運行報錯嗎
add_all_subscriber()
{
file=subscriber.txt
for i in `seq 100`; do
SubscriberId = 0
a = $(($SubscriberId + $i))
add_one_subscriber $a
sed -e 's/Id/$a/' subscriber.txt >> subscriber_update.txt
done
mv subscriber.txt subscriber_update.txt
rm -rf subscriber.txt
mv subscriber_update.txt subscriber.txt
else
echo "completed"
fi
}
改成下面的內容試下
C. 編寫一個shell程序,實現用for循環輸出1到20間的奇數
#!/bin/sh
for ((i=1;i<20;i=i+2));
do
echo $i
done
類似於DOS下的command.com和後來的cmd.exe。它接收用戶命令,然後調用相應的應用程序。
命令行式shell(Command Line Interface shell ,即CLI shell)
例如:
bash / sh / ksh / csh / zsh(Unix/linux 系統)
(3)shell命令循環擴展閱讀:
傳統意義上的shell指的是命令行式的shell,以後如果不特別註明,shell是指命令行式的shell。
文字操作系統與外部最主要的介面就叫做shell。shell是操作系統最外面的一層。shell管理與操作系統之間的交互:等待輸入,向操作系統解釋你的輸入,並且處理各種各樣的操作系統的輸出結果。
shell提供了與操作系統之間通訊的方式。這種通訊可以以交互方式,或者以shell script方式執行。shell script是放在文件中的一串shell和操作系統命令,它們可以被重復使用。本質上,shell script是命令行命令簡單的組合到一個文件裡面。