1. 程式人生 > >Linux命令之for

Linux命令之for

用途說明

在shell中用於迴圈。類似於其他程式語言中的for,但又有些不同。for迴圈是Bash中最常用的語法結構。

常用格式

格式一

for 變數

do

    語句

done

格式二

for 變數 in 列表

do

    語句

done

格式三

for ((變數=初始值; 條件判斷; 變數變化))

do

    語句

done

使用示例

示例一

Bash程式碼  收藏程式碼
  1. for s in ac apropos at arp  
  2. do  
  3.      echo $s  
  4. done   

[[email protected] ~]# for s in ac apropos at arp


> do
>     echo $s
> done
ac
apropos
at
arp
[[email protected] ~]#

示例二

Bash程式碼  收藏程式碼
  1. for f in *  
  2. do  
  3.     echo $f  
  4. done  
 

[[email protected] ~]# for f in *
> do
>     echo $f
> done
anaconda-ks.cfg
bak181
hlx
install.log
install.log.syslog
job.sh
job.txt
mbox
mini
setup
temp
vsftpd-2.0.5-16.el5.i386.rpm
vsftpd.conf
work191
[

[email protected] ~]#

示例三

Bash程式碼  收藏程式碼
  1. ls >ls.txt  
  2. for s in $(cat ls.txt)  
  3. do  
  4.     echo $s  
  5. done  
 

[[email protected] ~]# ls >ls.txt

[[email protected] ~]# for s in $(cat ls.txt)
>
> do
>
>     echo $s
>
> done
anaconda-ks.cfg
bak181
hlx
install.log
install.log.syslog
job.sh
job.txt
ls.txt
mbox
mini
setup
temp
vsftpd-2.0.5-16.el5.i386.rpm
vsftpd.conf
work191
[

[email protected] ~]#

示例四

Bash程式碼  收藏程式碼
  1. print_args()  
  2. {  
  3.     for arg in "[email protected]"
  4.     do  
  5.         echo $arg  
  6.     done  
  7. }  
  8. print_args 1234
  9. print_args "this is a test"
  10. <span style="color: #000000;">print_args this is a test</span>  

[[email protected] root]# print_args()
> {
>     for arg in "[email protected]"
>     do
>         echo $arg
>     done
> }
[[email protected] root]# print_args 1 2 3 4
1
2
3
4
[[email protected] root]# print_args "this is a test"
this is a test
[[email protected] root]# print_args this is a test
this
is
a
test

示例五

Bash程式碼  收藏程式碼
  1. for ((i=0; i<10; ++i))  
  2. do  
  3.     echo $i  
  4. done  

[[email protected] root]# for ((i=0; i<10; ++i))
> do
>     echo $i
> done
0
1
2
3
4
5
6
7
8
9

示例六 列表為陣列

Bash程式碼  收藏程式碼
  1. AREAS=(1901190219031904190519061907190819091910191119121913)  
  2. NAMES=(南京 無錫 徐州 常州 蘇州 南通 連雲港 淮安 鹽城 揚州 鎮江 泰州 宿遷)  
  3. NUM_OF_AREAS=13
  4. area_name_of()  
  5. {  
  6.     for ((I=0; I<$NUM_OF_AREAS; ++I))  
  7.     do  
  8.         if [ "$1" == "${AREAS[I]}" ]; then  
  9.             echo "${NAMES[I]}"
  10.         fi  
  11.     done  
  12. }  
  13. echo $(area_name_of 1903)  
  14. for AREA in ${AREAS[*]};  
  15. do  
  16.     echo $AREA $(area_name_of $AREA)  
  17. done  

[[email protected] root]# AREAS=(1901 1902 1903 1904 1905 1906 1907   1908 1909 1910 1911 1912 1913)
[[email protected] root]# NAMES=(南京 無錫 徐州 常州 蘇州 南通 連雲港 淮安 鹽城 揚州 鎮江 泰州 宿遷)
[[email protected] root]# NUM_OF_AREAS=13
[[email protected] root]# area_name_of()
> {
>     for ((I=0; I<$NUM_OF_AREAS; ++I))
>     do
>         if [ "$1" == "${AREAS[I]}" ]; then
>             echo "${NAMES[I]}"
>         fi
>     done
> }
[[email protected] root]# echo $(area_name_of 1903)
徐州
[[email protected] root]# for AREA in ${AREAS[*]};
> do
>     echo $AREA $(area_name_of $AREA)
> done
1901 南京
1902 無錫
1903 徐州
1904 常州
1905 蘇州
1906 南通
1907 連雲港
1908 淮安
1909 鹽城
1910 揚州
1911 鎮江
1912 泰州
1913 宿遷
[[email protected] root]#

示例七 bash version 3.0+

Java程式碼  收藏程式碼
  1. bash --version  
  2. for i in {1..5}  
  3. do
  4.    echo "Welcome $i times"
  5. done   

[[email protected] root]# bash --version
GNU bash, version 2.05b.0(1)-release (i386-redhat-linux-gnu)
Copyright (C) 2002 Free Software Foundation, Inc.
[[email protected] root]# for i in {1..5}
> do
>    echo "Welcome $i times"
> done
Welcome {1..5} times
[[email protected] root]#

換個較高版本的Linux。

[[email protected] ~]# bash --version
GNU bash, version 3.2.25(1)-release (i686-redhat-linux-gnu)
Copyright (C) 2005 Free Software Foundation, Inc.
[[email protected] ~]# for i in {1..5}
> do
>    echo "Welcome $i times"
> done
Welcome 1 times
Welcome 2 times
Welcome 3 times
Welcome 4 times
Welcome 5 times
[[email protected] ~]#

示例八 Bash v4.0+

Bash程式碼  收藏程式碼
  1. echo "Bash version ${BASH_VERSION}..."
  2. for i in {0..10..2}  
  3.   do  
  4.      echo "Welcome $i times"
  5.  done  

[[email protected] root]# echo "Bash version ${BASH_VERSION}..."
Bash version 2.05b.0(1)-release...
[[email protected] root]# for i in {0..10..2}
>   do
>      echo "Welcome $i times"
>  done
Welcome {0..10..2} times
[[email protected] root]#

換個較高版本的Linux。

[[email protected] ~]# echo "Bash version ${BASH_VERSION}..."
Bash version 3.2.25(1)-release...
[[email protected] ~]# for i in {0..10..2}
>   do
>      echo "Welcome $i times"
>  done
Welcome {0..10..2} times
[[email protected] ~]#

傳說Bash4.0可以支援這種語法。

Bash version 4.0.33(0)-release...
Welcome 0 times
Welcome 2 times
Welcome 4 times
Welcome 6 times
Welcome 8 times
Welcome 10 times

問題思考

1. 怎麼用for實現死迴圈(無限迴圈)?

2. 比較幾種寫法的不同:(1) for arg in $* (2) for arg in [email protected] (3) for arg in "$*" (4) for arg in "[email protected]"

3. 怎麼跳出for迴圈?

4. for s; do echo $s; done  這個寫法的執行結果是什麼?

相關資料

【4】Keep IT Simple and Stupid 在Bash的命令列使用For迴圈


相關推薦

Linux命令for

用途說明 在shell中用於迴圈。類似於其他程式語言中的for,但又有些不同。for迴圈是Bash中最常用的語法結構。 常用格式 格式一 for 變數 do     語句 done 格式二 for 變數 in 列表 do     語句 done 格式三 for ((變

Linux命令stty

repl 位置 而不是 connector 啟動 previous dsr 根據 pass 用途說明 stty命令用於顯示和修改終端行設置(change and print terminal line settings)。 常用參數 stty命令不帶參數可以打印終端行設置,

Linux命令kill

多種方式 輸入 字符 指定 避免 選項 con 擴展 firefox 精通Linux的kill命令    不管你使用哪種操作系統,你一定會遇到某個行為失常的應用,它把自己鎖死並拒絕關閉。在Linux(還有Mac)。你能夠用一個"kill"命令強制終結它。在這個教程中,我

Linux命令netstat

unknown 網絡相關 mes packet forward 提示 send 狀態 統計 Linux命令之netstat詳解 簡介 Netstat 命令用於顯示各種網絡相關信息,如網絡連接,路由表,接口狀態 (Interface Statistics),masquerad

linux 命令 apt-get

檢查 end 修正 blog font span man 損壞 /var/ apt-get 是一個下載安裝軟件包的簡單命令行接口 使用方法: apt-get [OPTIONS] [COMMANDS] [PACKAGE_NAMES] OPTIONS:

linux 命令 watch

html shell ati watch命令 art track pwd -s 周期 watch能夠幫你監測一個命令的執行結果,省得你一遍遍的手動執行。在Linux下。watch是周期性的執行下個程序。並全屏顯示執行結果。你能夠拿他來監測你想要的一切命令的結果變化,

Linux命令CP詳解

linux命令之cp詳解Linux命令之CP詳解嘿嘿,又一周過去了,大家過的怎麽樣呢,在這一周時間裏,小編可是又學到不少新知識呢。今天呢,小編就和大家分享一下Linux中我們常用的CP的命令,這裏的cp可是copy的簡寫噢。(容我嘚瑟一下) 學過linux的都知道,在我們操作的過程中,我們常常會用到cp這個命

linux命令head、tail命令具體解釋

-c pri fadein rip lin comment pen inux ont head 語法 樣例 tail 語法 樣例 head和tail組合使用方法舉例 head 語法 head [-n -k ].

Linux命令——id

命令 linux id id命令是查看用戶相關屬性信息。顯示真實有效的id(UID)和組ID(GID),UID是對應用戶的單一身份標識,GID則是對應多個UID。常用參數:  -g或--group  顯示用戶所屬群組的ID。  -G或--groups  顯示用戶所屬附加群組的ID。  -n或--n

linux 命令top

設置 smd gnome ont str 優先級 ive set tld top命令是顯示當前系統正在執行的進程相關信息。包含進程ID、內存占用率等;top命令格式例如以下: top [OPTIONS] OPTIONS: -b 批處理 -c

移位運算、Arrays中的copyOf、java.util.AbstractCollection、linux命令tail

xca eid width gte 技術分享 blank strac eba tail 移位運算:http://www.cnblogs.com/hongten/p/hongten_java_yiweiyunsuangfu.html。 ---------- Arrays中的c

Linux命令uptime

and sin bsp 登錄 logs 0.00 mage 查看 工具包 這是什麽 uptime用來查看系統已經啟動了多長時間了。 它顯示的信息和w命令的頭(第一行)是一樣一樣的。 舉個栗子 舉一個實際的應用場景: 比如發現服務器上的某些沒有加入開機啟動的服務掛了一

Linux命令命令查找方式

命令查找順序1 命令類型 linux中命令類型分為兩類,一類為shell中自帶的命令,即內部命令,而其它的在文件系統之上的命令程序,即外部命令. 內部命令的優點: 命令程序在內存中,使用更快捷 相關命令: type,enable type -

測試過程中常用的linux命令【查看文件指定行的內容】

sed head tail 在開展測試工作的過程中,通常要接觸到服務器,對於linux服務器,總結一些常用的命令。 準備工作為了能直觀展示命令結果,使用腳本創建一個文件,在顯示文件內容的同時,也直觀的顯示行號。#!/bin/bash FileName=TestFile.log touch ./$

測試過程中常用的linux命令【查找指定的文件內容】

vi grep 之前遇到過這種情況,在查看日誌定位問題時,會將log 傳輸到本地,然後用本地的文本編輯工具打開文件,然後查找關鍵字,再進行分析。 這樣做無疑會降低效率。整理了幾個常用的命令,可以進行快速的查找。測試文件:文件名稱為execution.log, 文件內容如下:[error] Timed o

Linux命令bc

命令 logs oca cal clas 交互 浮點 linux blog bc命令是一種支持任意精度的交互執行的計算器語言。 bash內置了對整數四則運算的支持,但是並不支持浮點運算,而bc命令可以很方便的進行浮點運算,當然整數運算也不再話下。 如果沒有可以下載

Linux命令pwd和cd

linux 基本操作命令 1. pwd print working directory 打印當前所在路徑 2.cd change directory 改變路徑、切換路徑 cd /home ( 沒有選項,有參數) cd /home/book 為了簡化輸入: cd / 切換到根目錄 cd

Linux命令mkdir和rmdir

linux mkdir rmdir mkdir make directory 創建目錄 1)mkdir 目錄名 舉例: mkdir dir0 2) mkdir -p 父目錄/子目錄 mkdir -p dir1/dir2 其中,-p是parents的縮寫 連續創建多級目錄,比如父目錄和子目錄,如果父

Linux命令ls

linux ls ls list 列出目錄內容 命令 【選項】 【參數】 1)ls 顯示當前所在目錄的內容 2)ls 目錄名 ls /home 則指定顯示home的內容 3) ls 選項 目錄名 常用的選項: -l(它是long的縮寫),顯示目

Linux命令man、info、--help

linux man info --help 幫助信息 man info --help 1)man man man 產看man手冊的說明 man ls 當沒有指定使用哪一頁時,默認使用第一頁 man 1 ls