linux - 狂欢 : how to grep string from file

标签 linux bash

我对 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/

相关文章:

linux - 运行 perf 进行测试 - 缓存未命中 100%

bash - 这个 bash fork 炸弹是如何工作的?

python - 使用子进程运行多个 bash 命令

bash - 如何从具有制表符分隔列的文件中提取第一列

linux - 使用exec命令时无法退出Shell脚本

bash cat 多个文件内容到没有换行符的单个字符串

linux - zsh 在不创建文件的情况下给出文件参数 - 语法?

linux - CMake 使用库预加载每个测试

linux - 将一个多页 docx 文件拆分为多个单页 docx 文件

linux - UDP recvmsg 上的 EHOSTUNREACH