我有一个像这样的bash脚本:
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是: * _sometext1 * sometext2
前面的*,它将作为以这些值结尾的文本grep。
我知道这一点:问题是:我如何编写if else到我的bash代码中识别*是在前面还是后面?
注意:您可以忽略我的bash代码,我只需要if else条件来确定“*”位于字符串的前面或后面。
任何帮助都会很棒。
由于
答案 0 :(得分: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 否则。
希望这有帮助。