2013-10-09 49 views
0

最后我有一个bash脚本是这样的:庆典:通配符的grep开始与

TABLE_TO_IGNORE=$(mysql -u $DBUSER -p$DBPASS -h $DBHOST -N <<< "show tables from $DBNAME" | grep "^$i" | xargs); 

目前我只能够到grep文本开始。如何编写确定以?结尾的文本的代码?

让的说1:

我的$ i是: test1_ * tb2_ * tb3_ *

与*在后面的部分,它会用grep文字开始与价值

让的说2:

我的$ i是: * _so metext1 * sometext2

*在前面,它将grep作为文本以这些值结尾。

我知道这一点:
的grep '^ sometext1' 文件=在一行
的grep 'sometext2 $' 文件= 'sometext2' 在一行的末尾

问题开始 'sometext1'是:我如何写我的bash代码的if else标识*是在前面还是后面?

注:你可以忽略我的bash的代码,我需要的只是,如果其他条件确定的“*”是在前面或字符串后面。

任何帮助将是伟大的。

谢谢

回答

1

您可以试试这段代码。

#!/bin/bash 

stringToTest="Hello World!*" 

echo $stringToTest | grep "^\*.*" > /dev/null 
if [ $? -eq 0 ]; then 
    echo "Asterisk is at the front" 
fi 

echo $stringToTest | grep "^.*\*$" > /dev/null 
if [ $? -eq 0 ]; then 
    echo "Asterisk is at the back" 
fi 

如该代码所示,我利用的退出代码($?)来确定正则表达式是否匹配字符串。如图man grep

通常,退出状态是0,如果选择的行被找到和1 否则。

希望这会有所帮助。