處理循環(huán)的輸出

本篇內(nèi)容均摘自《Linux命令行與shell腳本編程大全》琼掠,個(gè)人認(rèn)為需要重點(diǎn)學(xué)習(xí)的章節(jié)。【免費(fèi)】Linux命令行與Shell腳本編程大全 第3版 PDF全本 21MB 百度網(wǎng)盤下載 - 今夕是何夕 - 博客園
在shell腳本中眉枕,你可以對(duì)循環(huán)的輸出使用管道或進(jìn)行重定向。這可以通過在done命令之后添加一個(gè)處理命令來實(shí)現(xiàn)速挑。

for file in /home/rich/*
  do
    if [ -d "$file" ]
    then
      echo "$file is a directory"
    elif
      echo "$file is a file"
    fi
done > output.txt

shell會(huì)將for命令的結(jié)果重定向到文件output.txt中,而不是顯示在屏幕上翅萤。
考慮下面將for命令的輸出重定向到文件的例子:

$ cat test23
#!/bin/bash
for (( a = 1; a < 10; a++ ))
do
  echo "The number is $a"
done > test23.txt
echo "The command is finished."
$ ./test23
The command is finished.
$ cat test23.txt
The number is 1
The number is 2
The number is 3
The number is 4
The number is 5
The number is 6
The number is 7
The number is 8
The number is 9

shell創(chuàng)建了文件test23.txt并將for命令的輸出重定向到這個(gè)文件腊满。 shell在for命令之后正常顯示了echo語句。
這種方法同樣適用于將循環(huán)的結(jié)果管接給另一個(gè)命令:

$ cat test24
#!/bin/bash
for state in "North Dakota" Connecticut Illinois Alabama Tennessee
do
  echo "$state is the next place to go"
done | sort
echo "This completes our travels"
$ ./test24
Alabama is the next place to go
Connecticut is the next place to go
Illinois is the next place to go
North Dakota is the next place to go
Tennessee is the next place to go
This completes our travels

state值并沒有在for命令列表中以特定次序列出碳蛋。 for命令的輸出傳給了sort命令,該命令會(huì)改變for命令輸出結(jié)果的順序玷室。運(yùn)行這個(gè)腳本實(shí)際上說明了結(jié)果已經(jīng)在腳本內(nèi)部排好序了。

查找可執(zhí)行文件
當(dāng)你從命令行中運(yùn)行一個(gè)程序的時(shí)候穷缤, Linux系統(tǒng)會(huì)搜索一系列目錄來查找對(duì)應(yīng)的文件箩兽。這些目錄被定義在環(huán)境變量PATH中。如果你想找出系統(tǒng)中有哪些可執(zhí)行文件可供使用汗贫,只需要掃描PATH環(huán)境變量中所有的目錄就行了。如果要徒手查找的話芳绩,就得花點(diǎn)時(shí)間了。不過我們可以編寫一個(gè)小小的腳本搪花,輕而易舉地搞定這件事。首先是創(chuàng)建一個(gè)for循環(huán)撮竿,對(duì)環(huán)境變量PATH中的目錄進(jìn)行迭代。處理的時(shí)候別忘了設(shè)置IFS分隔符幢踏。

IFS=:
for folder in $PATH
do

現(xiàn)在你已經(jīng)將各個(gè)目錄存放在了變量folder中,可以使用另一個(gè)for循環(huán)來迭代特定目錄中的所有文件僚匆。

for file in $folder/*
do

最后一步是檢查各個(gè)文件是否具有可執(zhí)行權(quán)限,你可以使用if-then測(cè)試功能來實(shí)現(xiàn)咧擂。

if [ -x $file ]
then
echo " $file"
fi

將這些代碼片段組合成腳本就行了檀蹋。

$ cat test25
#!/bin/bash
# finding files in the PATH
IFS=:
for folder in $PATH
do
  echo "$folder:"
  for file in $folder/*
  do
    if [ -x $file ]
    then
      echo "  $file"
    fi
  done
done

運(yùn)行這段代碼時(shí),你會(huì)得到一個(gè)可以在命令行中使用的可執(zhí)行文件的列表俯逾。

$ ./test25 | more
/usr/local/bin:
/usr/bin:
/usr/bin/Mail
/usr/bin/Thunar
/usr/bin/X
/usr/bin/Xorg
/usr/bin/[
/usr/bin/a2p
/usr/bin/abiword
/usr/bin/ac
/usr/bin/activation-client
/usr/bin/addr2line

輸出顯示了在環(huán)境變量PATH所包含的所有目錄中找到的全部可執(zhí)行文件。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末皇筛,一起剝皮案震驚了整個(gè)濱河市识脆,隨后出現(xiàn)的幾起案子设联,更是在濱河造成了極大的恐慌灼捂,老刑警劉巖换团,帶你破解...
    沈念sama閱讀 206,126評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異的猛,居然都是意外死亡想虎,警方通過查閱死者的電腦和手機(jī)卦尊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門岂却,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人躏哩,你說我怎么就攤上這事署浩∩ǔ撸” “怎么了?”我有些...
    開封第一講書人閱讀 152,445評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵弊攘,是天一觀的道長(zhǎng)姑曙。 經(jīng)常有香客問我,道長(zhǎng)渣磷,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,185評(píng)論 1 278
  • 正文 為了忘掉前任竟宋,我火速辦了婚禮,結(jié)果婚禮上丘侠,老公的妹妹穿的比我還像新娘。我一直安慰自己蜗字,他們只是感情好脂新,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評(píng)論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著争便,像睡著了一般。 火紅的嫁衣襯著肌膚如雪滞乙。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 48,970評(píng)論 1 284
  • 那天序调,我揣著相機(jī)與錄音兔簇,去河邊找鬼硬耍。 笑死,一個(gè)胖子當(dāng)著我的面吹牛默垄,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播口锭,決...
    沈念sama閱讀 38,276評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼介杆,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了春哨?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,927評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤椰拒,失蹤者是張志新(化名)和其女友劉穎凰荚,沒想到半個(gè)月后燃观,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體便瑟,經(jīng)...
    沈念sama閱讀 43,400評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評(píng)論 2 323
  • 正文 我和宋清朗相戀三年脊框,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了践啄。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 37,997評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡往核,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出聂儒,到底是詐尸還是另有隱情硫痰,我是刑警寧澤,帶...
    沈念sama閱讀 33,646評(píng)論 4 322
  • 正文 年R本政府宣布非春,位于F島的核電站,受9級(jí)特大地震影響奇昙,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜储耐,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望什湘。 院中可真熱鬧,春花似錦闽撤、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽饱亮。三九已至绎巨,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間场勤,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評(píng)論 1 260
  • 我被黑心中介騙來泰國打工格遭, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人拒迅。 一個(gè)月前我還...
    沈念sama閱讀 45,423評(píng)論 2 352
  • 正文 我出身青樓她倘,卻偏偏與公主長(zhǎng)得像璧微,于是被迫代替她去往敵國和親硬梁。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 官網(wǎng) 中文版本 好的網(wǎng)站 Content-type: text/htmlBASH Section: User ...
    不排版閱讀 4,367評(píng)論 0 5
  • 一屹电、Python簡(jiǎn)介和環(huán)境搭建以及pip的安裝 4課時(shí)實(shí)驗(yàn)課主要內(nèi)容 【Python簡(jiǎn)介】: Python 是一個(gè)...
    _小老虎_閱讀 5,720評(píng)論 0 10
  • 個(gè)人學(xué)習(xí)批處理的初衷來源于實(shí)際工作;在某個(gè)迭代版本有個(gè)BS(安卓手游模擬器)大需求牧愁,從而在測(cè)試過程中就重復(fù)涉及到...
    Luckykailiu閱讀 4,685評(píng)論 0 11
  • 第 2 章 SHELL 基礎(chǔ)知識(shí)2.1 shell腳本我們?cè)谏厦婧?jiǎn)單介紹了一下什么是shell腳本外莲,現(xiàn)在我們來進(jìn)一...
    LiWei_9e4b閱讀 1,553評(píng)論 0 0
  • 每個(gè)人都肯定有爸爸媽媽,爸爸其實(shí)還有另一種稱乎叫做父親苍狰。出乎我意料的是,居然還真有這首歌——父親淋昭,當(dāng)我第...
    45cbff51831c閱讀 94評(píng)論 0 1