亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Bash技巧:把變量賦值為換行符(判斷文件是否以換行符結(jié)尾)

 更新時間:2020年08月18日 17:21:47   作者:南木閣  
這篇文章主要介紹了Bash技巧:把變量賦值為換行符,判斷文件是否以換行符結(jié)尾,需要的朋友可以參考下

變量賦值為換行符

在 bash 中,如果要把變量賦值為換行符,寫為 '\n' 沒有效果,需要寫為 $'\n'。具體舉例如下:

$ newline='\n'
$ echo $newline
\n
$ newline=$'\n'
$ echo $newline

可以看到,把 newline 變量賦值為 'n',得到的是 n 這個字符串,而不是換行符自身。

這是 bash 和 C 語言不一樣的地方。
在 C 語言中,'n' 對應(yīng)換行符自身,只有一個字符;而 "n" 對應(yīng)一個字符串。
但是在 bash 中,'n' 也是對應(yīng)一個字符串。

把 newline 賦值為 $'\n',就能獲取到換行符自身。查看 man bash 對這個寫法的說明如下:

Words of the form $'string' are treated specially. The word expands to string, with backslash-escaped characters replaced as specified by the ANSI C standard. Backslash escape sequences, if present, are decoded as follows:

 \n  new line
 \r  carriage return
 \t  horizontal tab
 \'  single quote

The expanded result is single-quoted, as if the dollar sign had not been present.

即,$'string' 這個寫法可以使用 C 語言的轉(zhuǎn)義字符來獲取到對應(yīng)的字符自身。

判斷文件的最后一行是否以換行符結(jié)尾

在 Linux 中,可以使用下面命令來判斷文件的最后一行是否以換行符結(jié)尾:

test -n "$(tail filename -c 1)"

這里使用 tail filename -c 1 命令獲取到 filename 文件的最后一個字符。

實際使用時,需要把 filename 換成具體要判斷的文件名。

tail 命令可以獲取文件末尾的內(nèi)容。它的 -c 選項指定要獲取文件末尾的多少個字節(jié)。

查看 man tail 對 -c 選項的說明如下:

-c, --bytes=K

output the last K bytes; alternatively, use -c +K to output bytes starting with the Kth of each file.

即,tail -c 1 命令指定獲取所給文件的最后一個字符。

獲取到文件的最后一個字符后,要判斷該字符是不是換行符。這里不能直接判斷該字符是否等于換行符,而是要判斷該字符是否為空。

原因在于,使用 $(tail filename -c 1) 命令替換來獲取內(nèi)部命令的輸出結(jié)果時,bash 會去掉末尾的換行符。

所以當(dāng)文件的最后一行以換行符結(jié)尾時,$(tail filename -c 1) 命令替換會去掉獲取到的換行符,最終結(jié)果為空,并不會返回?fù)Q行符自身。

查看 man bash 對命令替換(command substitution)的說明如下:

Command substitution allows the output of a command to replace the command name. There are two forms:

  $(command)
 or
  `command`

Bash performs the expansion by executing command and replacing the command substitution with the standard output of the command, with any trailing newlines deleted. Embedded newlines are not deleted, but they may be removed during word splitting.

可以看到,經(jīng)過命令替換后,會去掉末尾的換行符。

由于 $(tail filename -c 1) 命令替換會去掉末尾的換行符,這里使用 test -n 來判斷最終結(jié)果是否為空字符串。

如果文件最后一行以換行符結(jié)尾,那么 $(tail filename -c 1) 的結(jié)果為空,test -n 命令會返回 1,也就是 false。

如果文件最后一行沒有以換行符結(jié)尾,那么 $(tail filename -c 1) 的結(jié)果不為空,test -n 命令會返回 0,也就是 true。

可以根據(jù)實際需要,改用 test -z 來判斷。如果文件最后一行以換行符結(jié)尾,$(tail filename -c 1) 的結(jié)果為空,test -z 命令會返回 0,也就是 true。

到此這篇關(guān)于Bash技巧:把變量賦值為換行符,判斷文件是否以換行符結(jié)尾的文章就介紹到這了,更多相關(guān)變量賦值為換行符內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Linux Shell循環(huán)中實現(xiàn)展示進(jìn)度百分比的實現(xiàn)方法

    Linux Shell循環(huán)中實現(xiàn)展示進(jìn)度百分比的實現(xiàn)方法

    這篇文章主要介紹了Linux Shell循環(huán)中實現(xiàn)展示進(jìn)度百分比的實現(xiàn)方法的相關(guān)資料,這里提供實現(xiàn)方法及實例,需要的朋友可以參考下
    2017-08-08
  • Bash腳本中括號和反引號的使用

    Bash腳本中括號和反引號的使用

    我們經(jīng)常需要引用變量或者命令的執(zhí)行結(jié)果來作為文件的名字或者日志的輸出,本文主要介紹了Bash腳本中括號和反引號的使用,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • 詳解Linux中vi命令大全

    詳解Linux中vi命令大全

    vi編輯器是所有Unix及Linux系統(tǒng)下標(biāo)準(zhǔn)的編輯器,它的強(qiáng)大不遜色于任何最新的文本編輯器,本文簡單給大家介紹linux中vi命令大全,感興趣的朋友一起學(xué)習(xí)吧
    2015-12-12
  • Linux Shell中的特殊符號和含義簡明總結(jié)(包含了絕大部份)

    Linux Shell中的特殊符號和含義簡明總結(jié)(包含了絕大部份)

    這篇文章主要介紹了Linux Shell中的特殊符號和含義簡明總結(jié),本文匯總了包含了絕大部份的Shell特殊符號,對每一個符號的作用做了總結(jié),需要的朋友可以參考下
    2014-06-06
  • 使用shell腳本每天對MySQL多個數(shù)據(jù)庫自動備份的講解

    使用shell腳本每天對MySQL多個數(shù)據(jù)庫自動備份的講解

    今天小編就為大家分享一篇關(guān)于使用shell腳本每天對MySQL多個數(shù)據(jù)庫自動備份的講解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • linux sudo密碼輸入時顯示星號的操作方法

    linux sudo密碼輸入時顯示星號的操作方法

    在輸入linux sudo密碼的時候終端是不顯示任何東西的,我們不知道我們按下的密碼到底輸入進(jìn)去了沒有,如果可以像在網(wǎng)站上登錄賬號密碼的時候顯示星號多好,下面小編給大家介紹下linux sudo密碼輸入時顯示星號的操作方法
    2018-01-01
  • 利用Shell解析處理XML的方法匯總

    利用Shell解析處理XML的方法匯總

    這篇文章主要給大家總結(jié)介紹了關(guān)于利用Shell解析處理XML的方法,分別介紹了關(guān)于xmlint、xpath和xml2三種工具的使用,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-10-10
  • Vim 編輯器操作匯總

    Vim 編輯器操作匯總

    本文是小編給大家收藏整理的關(guān)于vim編輯器操作方法,非常不錯,具有參考借鑒價值,需要的朋友參考下吧
    2018-05-05
  • 檢測網(wǎng)段IP使用情況的shell腳本

    檢測網(wǎng)段IP使用情況的shell腳本

    檢測網(wǎng)段IP使用情況的shell腳本,有需要的朋友可以參考下
    2013-02-02
  • Shell條件語句(條件測試、if語句、case語句)

    Shell條件語句(條件測試、if語句、case語句)

    本文主要介紹了Shell條件語句(條件測試、if語句、case語句),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06

最新評論