高級shell編程指南學(xué)習(xí)筆記(二)——由read命令引出的

今天遇到有人要寫一個從log里滾動讀取最新條目并且根據(jù)是否有前置空格輸出到終端的腳本,問我怎么判斷每行的前置空格移怯,我先給了他一個思路:

if [[ $(echo $line | cut -b 1) -eq " " ]];then 
: 
else
:
fi

過了一會琉闪,他說試過了,怎么改都不行删窒,于是我讓他把腳本全部貼出來(這里我略做了改動):

#!/bin/bash
#space.sh
service_log=1.txt
tail -f  $service_log|while read line;do
if [[ $(echo $line|cut -c 1) -eq " " ]]
  then
        echo $line
fi
done

乍一看是沒什么問題的裂垦,我試著運(yùn)行了一下,做了一個1.txt:

#1.txt
1111111
  22222
   3333

輸出的結(jié)果是這樣的:

[root@test ~]# bash space.sh 
■

“■”處是光標(biāo)

奇怪了肌索,為什么明明有空格卻不輸出第二第三行呢蕉拢。。。

if判斷的邏輯肯定是沒問題的晕换,那么問題大概就出在read的過程了午乓,于是百度了一下,果然闸准,shell腳本中默認(rèn)的IFS(內(nèi)部域分隔符)是空白益愈,所以read到的line中的空白都被替換掉,這是bash中對IFS為空白(空格夷家,制表符蒸其,換行符)時的處理。

教材中對

$IFS

的說明可以歸納如下:

我要吐槽簡書的md不支持流程圖

于是在space.sh里面加了一條語句:

IFS=#
#任意非空的字符瘾英,確保不會出現(xiàn)在1.txt中

完整的腳本:

#!/bin/bash
#space.sh
service_log=1.txt
IFS=#
tail -f  $service_log|while read line;do
if [[ $(echo $line|cut -c 1) -eq " " ]]
  then
        echo $line
fi
done

運(yùn)行結(jié)果如下:

[root@test ~]# bash space.sh 
  22222
   3333
■

效果不錯枣接。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市缺谴,隨后出現(xiàn)的幾起案子但惶,更是在濱河造成了極大的恐慌,老刑警劉巖湿蛔,帶你破解...
    沈念sama閱讀 221,888評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件膀曾,死亡現(xiàn)場離奇詭異,居然都是意外死亡阳啥,警方通過查閱死者的電腦和手機(jī)添谊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,677評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來察迟,“玉大人斩狱,你說我怎么就攤上這事≡浚” “怎么了所踊?”我有些...
    開封第一講書人閱讀 168,386評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長概荷。 經(jīng)常有香客問我秕岛,道長,這世上最難降的妖魔是什么误证? 我笑而不...
    開封第一講書人閱讀 59,726評論 1 297
  • 正文 為了忘掉前任继薛,我火速辦了婚禮,結(jié)果婚禮上愈捅,老公的妹妹穿的比我還像新娘遏考。我一直安慰自己,他們只是感情好蓝谨,可當(dāng)我...
    茶點故事閱讀 68,729評論 6 397
  • 文/花漫 我一把揭開白布诈皿。 她就那樣靜靜地躺著林束,像睡著了一般。 火紅的嫁衣襯著肌膚如雪稽亏。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,337評論 1 310
  • 那天缕题,我揣著相機(jī)與錄音截歉,去河邊找鬼。 笑死烟零,一個胖子當(dāng)著我的面吹牛瘪松,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播锨阿,決...
    沈念sama閱讀 40,902評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼宵睦,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了墅诡?” 一聲冷哼從身側(cè)響起壳嚎,我...
    開封第一講書人閱讀 39,807評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎末早,沒想到半個月后烟馅,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,349評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡然磷,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,439評論 3 340
  • 正文 我和宋清朗相戀三年郑趁,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片姿搜。...
    茶點故事閱讀 40,567評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡寡润,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出舅柜,到底是詐尸還是另有隱情梭纹,我是刑警寧澤,帶...
    沈念sama閱讀 36,242評論 5 350
  • 正文 年R本政府宣布业踢,位于F島的核電站栗柒,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏知举。R本人自食惡果不足惜瞬沦,卻給世界環(huán)境...
    茶點故事閱讀 41,933評論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望雇锡。 院中可真熱鬧逛钻,春花似錦、人聲如沸锰提。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,420評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至边坤,卻和暖如春名扛,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背茧痒。 一陣腳步聲響...
    開封第一講書人閱讀 33,531評論 1 272
  • 我被黑心中介騙來泰國打工肮韧, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人旺订。 一個月前我還...
    沈念sama閱讀 48,995評論 3 377
  • 正文 我出身青樓弄企,卻偏偏與公主長得像,于是被迫代替她去往敵國和親区拳。 傳聞我的和親對象是個殘疾皇子拘领,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,585評論 2 359

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

  • Ubuntu的發(fā)音 Ubuntu本涕,源于非洲祖魯人和科薩人的語言业汰,發(fā)作 oo-boon-too 的音。了解發(fā)音是有意...
    螢火蟲de夢閱讀 99,362評論 9 467
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理菩颖,服務(wù)發(fā)現(xiàn)样漆,斷路器,智...
    卡卡羅2017閱讀 134,702評論 18 139
  • 1.Shell腳本 1.1 格式 首行 #!/bin/bash 指定解釋器 1.2 注釋 '#'開頭的行晦闰,'...
    keep_moving閱讀 1,248評論 4 45
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法放祟,類相關(guān)的語法,內(nèi)部類的語法呻右,繼承相關(guān)的語法跪妥,異常的語法,線程的語...
    子非魚_t_閱讀 31,664評論 18 399
  • Shell 快速指南 概述 什么是 shell Shell 是一個用 C 語言編寫的程序声滥,它是用戶使用 Linux...
    靜默虛空閱讀 709評論 0 5