shell 指令碼中求一個字串的長度
阿新 • • 發佈:2019-02-19
shell 中沒有可以直接求 某個字串變數的長度,有時候 想判斷 這個字串的長度,該如何是好呢, 我們都知道 -n -z 分別是 字串不為空, 和字串 為空。
有時候想知道,字串的長度 ,卻沒有一個好的辦法。
有一個辦法,可以用 awk 在awk 中有一個函式, length() 就可以 獲取字串的長度
awk 'BEGIN { print length("chang11115")'}
這裡就可以獲取字串的長度。
但是如果要寫在shell 指令碼中 需要把 shell 變數傳入到 awk 中, 可以用 -v 選項。
#!/bin/bash curDir=$(cd "$(dirname "${BASH_SOURCE[0]}")"; pwd); #當前絕對路徑 mystring='aaabbb' #把mystring ,傳入到awk 中, 用 -v string=$mystring len=`awk -v string=$mystring 'BEGIN { print length(string)'}` echo "len:$len"
這樣就可以了,mystring 的長度 求出來了。
如果 mystring=‘aaa bbb ccc’ ,也就是 mystring 有空格 這個時候執行 上面指令碼 就會報錯。
錯誤如下:
[root@bdc130 shell]# sh 4.sh
錯誤如下:
awk: 命令列:1: 致命錯誤: 無法以讀模式開啟檔案“ccc”(沒有那個檔案或目錄)
len:
這個可能是awk -v 選項 傳值的時候,以空格把它們分開了。因此,在 mystring 加上引號,就可以了.
#!/bin/bash curDir=$(cd "$(dirname "${BASH_SOURCE[0]}")"; pwd); #當前絕對路徑 #mystring='mylinuxcentos' mystring='aaa bbb ccc' #echo "mystring:$mystring" len=`awk -v string="$mystring" 'BEGIN { print length(string)'}` echo "len:$len"
這樣就可以,非常簡單吧。
2017年 10月 10日 星期二 20:02:15補充:
其實shell 指令碼中是可以 直接取到字串的長度的。
${#變數名} 這樣就可以取到字串的長度了。
#!/bin/bash
mystring="changyubiao"
#mystring="chang"
length=${#mystring}
echo $length
這樣就可以 取到 字串的長度。
分享快樂,留住感動。 喜歡就給我點贊吧。