怎么测试一个字符串是不是由某特定字符串开头?

sh/bash/dash/ksh/zsh等Shell脚本
回复
头像
fanhe
帖子: 2357
注册时间: 2007-03-24 23:45

怎么测试一个字符串是不是由某特定字符串开头?

#1

帖子 fanhe » 2010-10-17 18:04

已知道用 [[ 可以实现

代码: 全选

[[ "$1" == "$b"* ]]
但是用 [ 没法这样做
[[ 是bash内建命令,其他shell例如dash可没有
我想问,用 [ 怎么实现?
delectate
帖子: 18311
注册时间: 2008-01-09 22:41

Re: 怎么测试一个字符串是不是由某特定字符串开头?

#2

帖子 delectate » 2010-10-17 18:08

1.用正则
2.用字符处理的函数/方法,截取第一个字符对比
3.调用第三方命(grep,egrep)
头像
trigger
帖子: 1604
注册时间: 2006-10-25 18:08

Re: 怎么测试一个字符串是不是由某特定字符串开头?

#3

帖子 trigger » 2010-10-18 8:55

echo "asfdfjdlkj"|sed '/^a/d'
空则真
楼主真是一派胡言,真可谓:“两个黄鹂鸣翠柳,不知所云;一行白鹭上青天,不知所止“。本来不想和你辩论,今天气愤不过,和你理论一番。我国宪法写得清清楚楚:“一夜夫妻百日恩,七楼以上才有电梯”。这个想必你知道,既然知道,你就不能断章取义,就算是天气预报,它还有不准的时候呢!!!再者说了,那中国银行也不是你一家开的。人家马拉多纳都结婚了,你还拿着粮票顶什么用呢。真是滑天下之大稽。前些日子,全国人大刚刚开过会,郑重声明:“中国不搞多party制,存栏母猪给补贴”。多好的事呢,楞让你这号人给搅混了。
头像
poweroff
帖子: 395
注册时间: 2008-12-13 15:03

Re: 怎么测试一个字符串是不是由某特定字符串开头?

#4

帖子 poweroff » 2010-10-18 9:07

呵呵。

代码: 全选

echo |sed '/^a/d'
为什么不用grep

同样
一条狗的马甲!
对不起,我承认我是一只穿着马甲的狗!
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: 怎么测试一个字符串是不是由某特定字符串开头?

#5

帖子 eexpress » 2010-10-18 10:03

bash 支持正则比较的啊。都不学无术。
● 鸣学
头像
fanhe
帖子: 2357
注册时间: 2007-03-24 23:45

Re: 怎么测试一个字符串是不是由某特定字符串开头?

#6

帖子 fanhe » 2010-10-18 11:10

eexpress 写了:bash 支持正则比较的啊。都不学无术。
debian默认shell是dash,dash不支持正则比较,也没有双中括号
要写init的话,都不能用bash的扩展语法
除非,把默认shell改掉了,但是听说,dash速度比bash快,改成bash的话,开机也就变慢了

所以还是要写兼容性最好的脚本
aerofox
帖子: 1453
注册时间: 2008-05-24 8:30

Re: 怎么测试一个字符串是不是由某特定字符串开头?

#7

帖子 aerofox » 2010-10-18 12:11

可以用 expr 命令,: 操作符。
aerofox
帖子: 1453
注册时间: 2008-05-24 8:30

Re: 怎么测试一个字符串是不是由某特定字符串开头?

#8

帖子 aerofox » 2010-10-18 12:19

也可以从 $1 中去掉开头的 $b,如果仍然为 $1,则表示不是以 $b 开头的。

代码: 全选

if [ "${1#$b}" != "$1" ]; then
    echo "第一个参数是以 $b 开头的"
else
    echo "第一个参数不是以 $b 开头的"
fi
回复