91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

bash中如何將變量賦值為換行符

發布時間:2021-06-09 11:37:09 來源:億速云 閱讀:298 作者:小新 欄目:開發技術

這篇文章主要為大家展示了“bash中如何將變量賦值為換行符”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“bash中如何將變量賦值為換行符”這篇文章吧。

變量賦值為換行符

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

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

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

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

把 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 語言的轉義字符來獲取到對應的字符自身。

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

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

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

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

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

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

查看 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) 命令替換來獲取內部命令的輸出結果時,bash 會去掉末尾的換行符。

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

查看 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.

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

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

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

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

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

以上是“bash中如何將變量賦值為換行符”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

株洲市| 孙吴县| 常熟市| 青岛市| 绵阳市| 延庆县| 崇礼县| 中宁县| 宜良县| 通许县| 长兴县| 麦盖提县| 咸阳市| 新丰县| 恭城| 鄢陵县| 观塘区| 遂川县| 手游| 孟州市| 肃宁县| 常宁市| 华阴市| 扶余县| 读书| 公主岭市| 罗源县| 天峨县| 铜梁县| 兴仁县| 保山市| 宣城市| 厦门市| 昌邑市| 宜阳县| 克什克腾旗| 深州市| 德保县| 杭锦旗| 资源县| 元江|