[英]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.