我对 grep 有疑问,因为 VESTACP 经常使用它。
我有文件 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 文件中有 HOST
所以你知道它有什么问题吗
更新:: 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
我明白了
Error: mysql config parsing failed
最佳答案
$1
是脚本的第一个参数。
因此,host_str=$(grep "HOST='$1'"$VESTA/conf/mysql.conf)
根据您的参数从您的文件中获取包含一些变量的行,并且 eval $host_str
在您的脚本中设置这些变量。
因此,您的脚本需要一个参数来知道在您的文件中查找哪个主机,在您的例子中,它是本地主机,因此运行:./yourscript.sh localhost
。
关于linux - 狂欢 : how to grep string from file,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36221808/