Bash:如何从文件中grep字符串

时间:2016-03-25 14:26:02

标签: linux bash

由于VESTACP正在使用它,所以我遇到了grep的问题。

我有文件mysql.conf

$chevinFontBold = Zend_Pdf_Font::fontWithPath(Mage::getBaseDir() . '/lib/customfonts/chevin-bold.ttf');

$page->setFont($chevinFontBold, 8);

现在我跑

HOST='localhost' USER='root' PASSWORD='xxxxxx' CHARSETS='UTF8,LATIN1,WIN1250,WIN1251,WIN1252,WIN1256,WIN1258,KOI8' MAX_DB='500' U_SYS_USERS='' U_DB_BASES='1' SUSPENDED='no' TIME='05:32:47' DATE='2016-03-20'

我得到空的结果,虽然mysql.conf文件中有HOST我在上面粘贴了代码

所以任何想法都错了吗

UPDATE :: Vesta db connect code block

 echo host_str=$(grep "HOST='$1'" $VESTA/conf/mysql.conf)

我得到了

  

错误:mysql配置解析失败

2 个答案:

答案 0 :(得分:1)

您可能不想使用$1。而是试试这个:

echo host_str=$(grep -o "HOST='[^']*'" $VESTA/conf/mysql.conf)

[^']*扩展到恰好位于单引号之间的所有内容。选项-o确保只获得匹配的字符串,而不是整行,如果这是您想要的。

答案 1 :(得分:1)

$1是您脚本的第一个参数。

因此,host_str=$(grep "HOST='$1'" $VESTA/conf/mysql.conf)根据您的参数从文件中获取包含某些变量的行,eval $host_str在您的脚本中设置这些变量。

因此,您的脚本需要一个参数来知道在您的文件中查找哪个主机,在您的情况下,它是本地主机,因此请运行:./yourscript.sh localhost