2015-09-07 62 views
1

我已經發現如何讓我在bash字符串小寫:獲取小寫subtring在bash

> multi_case='MULTIcaseSTRING' 
> echo ${multi_case,,} 
multicasestring 

...以及如何獲得字符串的最後兩個字母:

> echo ${multi_case:(-2)} 
NG 

...但我不知道如何組合它們。

我如何獲得最後兩個字母小寫?如果有幫助,我知道這個字符串的長度通常是2到5個字符。

理想情況下,我正在尋找一個相當短的單行。

+1

Unfortuna我不認爲你可以嵌套這些擴展,所以如果你經常在一起做這兩件事情,你可能會更好地定義一個函數。 –

+1

我有bash 3.2.25和'echo $ {multi_case ,,}'拋出'Bad Substitution' –

+0

這個問題已經有答案[這裏] [1] 你可能會發現其他信息[here] [2] [1]:http://stackoverflow.com/questions/2264428/converting-string-to-lower-case-in-bash-shell-scripting [2]:HTTP:// askubuntu。 COM /問題/ 383352 /命令到轉換-AN-大寫-字符串到小寫 – Vargan

回答

2

可以「濫用」一個for循環它(如果你確信該變量不包含任何通配符或空格):

for i in ${multi_case,,}; do echo ${i:(-2)}; done 

但在實踐中,我會去爲一個臨時變量:

TMP=${multi_case,,}; echo ${TMP:(-2)} 
1

不是純bash的,但你可以使用tr獲得這一行完成:

multi_case='MULTIcaseSTRING' 
tr '[[:upper:]]' '[[:lower:]]' <<< "${multi_case:(-2)}" 
ng