2014-09-05 64 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

相关问题