繁体   English   中英

Bash:如何从文件grep字符串

[英]Bash : how to grep string from file

由于VESTACP大量使用grep,因此出现问题。

我有mysql.conf文件

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'

现在,当我跑步

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

我得到空结果,尽管我在上面的代码中粘贴了mysql.conf文件中的主机

所以任何想法有什么问题

更新:: Vesta数据库连接代码块

host_str=$(grep "HOST='$1'" $VESTA/conf/mysql.conf)
eval $host_str
if [ -z $HOST ] || [ -z $USER ] || [ -z $PASSWORD ]; then
    echo "Error: mysql config parsing failed"
    log_event "$E_PARSING" "$EVENT"
    exit $E_PARSING
fi

我得到

错误:mysql配置解析失败

您可能不想使用$1 而是尝试这样:

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

[^']*扩展到单引号之间的所有内容。 如果需要,选项-o确保仅获取匹配的字符串,而不是整个行。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM