1. 程式人生 > >Shell在計算包含轉義字元(\)的字元長度時的驗證說明

Shell在計算包含轉義字元(\)的字元長度時的驗證說明

前面的一篇文章《[Linux]如何在Shell指令碼中計算字串長度?》介紹瞭如何使用Shell計算字元長度,但小魔發現當字串中包含轉義字元\時,文章所提供的幾種方法會將轉義字元統計在內,通過我在環境中的測試,先直接給出驗證結論:
1. 若轉義字元\後跟隨的是特殊字元,例如:$,那麼在計算字串長度時,會自動將轉義符\排除掉;
2. 若轉義字元\後跟隨的不是特殊字元,而是字母、數字之類的,那麼在計算字串長度時,則會將轉義符\計算在內。

下面我們從這兩個結論的場景去驗證,詳細驗證過程如下:

驗證場景1:當轉義符\後跟隨的不是特殊字元,是字母的場景,這時計算出來的字串str=”abc\n”的長度是5

[

[email protected] ~]# str=”abc\n”
[[email protected] ~]# echo $str | wc -L
5
[[email protected] ~]# echo $str | awk -F “” ‘{print NF}’
5
[[email protected] ~]# echo $str | awk ‘{print length($0)}’
5
[[email protected] ~]# echo ${#str}
5

驗證場景2:當轉義符\後跟隨的是特殊字元,這時計算出來的字串str=”abc\$”的長度是4

[[email protected] ~]# str=”abc\$”
[[email protected] ~]# echo $str | wc -L
4
[[email protected] ~]# echo $str | awk -F “” ‘{print NF}’
4
[[email protected] ~]# echo $str | awk ‘{print length($0)}’
4
[[email protected] ~]# echo ${#str}
4