2015/10/03

Linux Bash Shell for and loop (迴圈)


Linux Shell 上常用的 for in 迴圈結構,可以幫忙很多工作。

----
for in 迴圈及結構
----
# 帶入變數內容的迴圈,自訂字串
[mtchang@c7 linux_shell]$ vim for.sh
#!/bin/bash
for VAR in file1 file2 file3
do
echo $VAR
done

# 設定可以執行權
[mtchang@c7 linux_shell]$ chmod +x for.sh 

# 執行
[mtchang@c7 linux_shell]$ ./for.sh 
file1
file2
file3

----
for in 迴圈及結構,搭配程式執行結果
----
# 將某個檔案或是程式執行的結果,帶入 for 迴圈內。
[mtchang@c7 linux_shell]$ head /etc/passwd | cut -f 1 -d:
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
operator

$ 使用 $() 將程式結果變成變數內容
[mtchang@c7 linux_shell]$ cat for_fileread.sh 
#!/bin/bash
for VAR in $(head /etc/passwd | cut -f 1 -d:)
do
echo $VAR
done

# 執行
[mtchang@c7 linux_shell]$ ./for_fileread.sh 
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
operator

----
for in 進階的新功能
----
# 程式
[mtchang@c7 linux_shell]$ cat for_adv.sh 
#!/bin/bash
for i in {1..5}
do
   echo "for loop 產生 1-5 目前內容為 $i "
done

echo 'Bash V4.0+ 功能 {START..END..INCREMENT} '
echo "Bash 版本 ${BASH_VERSION}"
for i in {1..12..2}
do
   echo "for loop 產生 1-12 目前內容為 $i 間隔為 2"
done

[mtchang@c7 linux_shell]$ chmod +x for_adv.sh 

# 執行
[mtchang@c7 linux_shell]$ ./for_adv.sh 
for loop 產生 1-5 目前內容為 1 
for loop 產生 1-5 目前內容為 2 
for loop 產生 1-5 目前內容為 3 
for loop 產生 1-5 目前內容為 4 
for loop 產生 1-5 目前內容為 5 
Bash V4.0+ 功能 {START..END..INCREMENT} 
Bash 版本 4.2.46(1)-release
for loop 產生 1-12 目前內容為 1 間隔為 2
for loop 產生 1-12 目前內容為 3 間隔為 2
for loop 產生 1-12 目前內容為 5 間隔為 2
for loop 產生 1-12 目前內容為 7 間隔為 2
for loop 產生 1-12 目前內容為 9 間隔為 2
for loop 產生 1-12 目前內容為 11 間隔為 2


我覺的這個 for in 就可以解決大部份的問題了,其他詳細的可以看這一邊 http://www.cyberciti.biz/faq/bash-for-loop/

沒有留言: