2014-09-05 48 views
1

我有一個bash腳本,我在代碼

${variable#!} 

意味着什麼看? 非常感謝

回答

2

它從變量的值中刪除前導!

一個例子將是:

kent$ foo='!!hello' 

kent$ echo ${foo#!} 
!hello 
+1

從技術上講,它不會從變量*中刪除*,它將擴展到變量的內容並將其刪除。我知道你知道,但可能值得一提的是,它不會在沒有重新分配的情況下更改變量的內容。 – 2014-09-05 09:25:40

+0

@AdrianFrühwirth你是對的。在這個例子中它不會改變'foo'。 – Kent 2014-09-05 09:27:43

1

演示:

var="!some!some!" 
echo ${var#!} 

打印

some!some! 
2

參見http://www.gnu.org/software/bash/manual/bashref.html#Shell-Parameter-Expansion

$ {parameter#word}

該單詞被擴展爲生成一個模式,就像在文件名擴展中一樣。如果模式匹配參數展開值的開始位置,則展開結果是匹配模式最短的參數展開值。如果參數是'@'或'',則將模式刪除操作依次應用於每個位置參數,並且擴展是結果列表。如果參數是一個以'@'或''爲下標的數組變量,則模式刪除操作將依次應用於數組的每個成員,並且該擴展是結果列表。

所以,如果$variable開始!,它將返回其內容,而第一!。如果不是,則返回$variable