關于linux
bash shell中的for語句
在linux中shell是必不可少的一部分,但是在bash shell中有while,for,until等循環命令,今天就介紹一下關于for的一些用法。文中任何錯誤希望大佬們一一指出,不勝感激。
bash
shell中提供了for命令,用于創建通過一系列值重復的循環,每次重復使用系列中的一個值執行一個定義的命令集。
for語句的基本格式如下:
for………in
list
do
commands
done
在參數list中提供一系列用于迭代(上一個輸出的結果,這一句用來輸入)的值。指定列表中的值有幾種不同的方法。
一.讀取列表中的值。
for命令的最基本使用方法是通過在for命令中定義一列值來迭代。如下圖↓
執行后如圖賦予t1的值一一被輸出出來!
若在列表中的值進行迭代時,將其他值賦予該變量還可以繼續使用,迭代的值是最后一個值。
輸出結果如下:
二.讀取列表中的復雜值。
若在shell中有特殊符號并且要前后一起輸出(下圖)該怎么辦呢?
竟然無法執行,若遇到\ ‘ , .等特殊符號時,可以使用反斜杠\來轉義特殊字符?;蛘哂秒p引號來定義使用上圖中的單引號
若單詞之間有空格必須一起輸出必須要有引號包圍。
三.變量讀取列表
用for語句來實現 從一個列表中讀取變量值,通過列表迭代
執行結果如下圖
四.讀取命令中的值
for語句中可以調用不是本文件中的值,即其他文件,把該文件中的值調用賦予一個變量在調用該變量就可以在本文件使用。如下圖
這是我創建的一個名字為can的文件
在t4中把can中的值賦予file之后在for中調用也可以輸出出來 如下圖:
五. 改編字段分隔符
此內容博主剛了解 ,錯誤內容還望指出,謝謝大佬們。
字段分隔符一共有三:空格,制表符(指Tab),換行符(enter或者回車)在shell中若是出現回車,空格等腳本會認為是在換行或者在啟動新的數據段,若處理包含空格的文件名時就會出現干擾。列出如下圖:我創建了兩個文件 (can
c)包含空格的文件名
當我在腳本中調用can c這個文件時 即使加上雙引號還是輸出了can中的代碼和輸出內容如圖:(我把IFS注釋掉了)
但是,當我把注釋取消即可正常輸出can c的內容如下圖:
在文件中有空格也是忽略直接輸出
沒有IFS時
加上IFS的注釋后
把can文件中的每行空格都當成分隔符不輸出
六.使用通配符讀取目錄
for不僅可以讀取文件還可以用通配符讀取目錄,尤其是不知道文件中的文件名時。本人在根下創建了一個app目錄在里面寫了幾個腳本和一個目錄怎么用for來顯示出來呢 ?
當前路徑
app下的文件數量種類
腳本如下
把目錄文件賦予file在通過if then echo分類輸出出來
執行結果如下圖:
以上就是我所知的for用法,歡迎補充。
一定不吝賜教!
原創文章,作者:mengL,如若轉載,請注明出處:http://www.www58058.com/81029