首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >bash:如何检查字符串是否以'#‘开头?

bash:如何检查字符串是否以'#‘开头?
EN

Stack Overflow用户
提问于 2015-02-14 18:07:22
回答 3查看 42.1K关注 0票数 23

在bash中,我需要检查字符串是否以“#”符号开头。我该怎么做?

这是我的观点

代码语言:javascript
复制
if [[ $line =~ '#*' ]]; then
    echo "$line starts with #" ;
fi

我想对一个文件运行这个脚本,这个文件看起来是这样的--

代码语言:javascript
复制
03930
#90329
43929
#39839

这是我的脚本--

代码语言:javascript
复制
while read line ; do
    if [[ $line =~ '#*' ]]; then
        echo "$line starts with #" ;
    fi
done < data.in

这是我的预期输出--

代码语言:javascript
复制
#90329 starts with #
#39839 starts with #

但是我不能让它工作,你知道吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-02-14 18:12:42

不需要正则表达式,一个模式就足够了

代码语言:javascript
复制
if [[ $line = \#* ]] ; then
    echo "$line starts with #"
fi

或者,您可以使用参数扩展:

代码语言:javascript
复制
if [[ ${line:0:1} = \# ]] ; then
    echo "$line starts with #"
fi
票数 37
EN

Stack Overflow用户

发布于 2015-02-14 18:12:05

只需使用==即可使用shell glob

代码语言:javascript
复制
line='#foo'
[[ "$line" == "#"* ]] && echo "$line starts with #"
#foo starts with #

保持对#的引用是很重要的,以阻止shell试图解释为注释。

票数 6
EN

Stack Overflow用户

发布于 2015-02-14 18:10:12

代码语言:javascript
复制
while read line ; 
do
    if [[ $line =~ ^#+ ]]; then
        echo "$line starts with #" ;
    fi
done < data.in

这将完成删除* with ++匹配1或更多,而*匹配0或更多,因此在您的代码中,它将显示数字,即使它不是以'#‘开头

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28514484

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档