大家好我写了一个执行查询e的bash脚本并将结果打印到文件中但它不起作用
source ../db.config
msqlcmd="mysql -u $DB_USER -p$DB_PASS -s -B -q"
echo "USE INFORMATION_SCHEMA;\nSELECT * FROM COLUMNS" | $mysqlcmd > ../tmpsql/columns.txt
在db.config中有用于访问db
的凭据答案 0 :(得分:1)
不要将命令放在变量中,因为[ this ]可以很好地总结。
[ heredoc ]是你的朋友。
mysql -u "$db_user" -p "$db_pass" -s -B -q <<-EOF > ../tmpsql/columns.txt
USE INFORMATION_SCHEMA;
SELECT * FROM COLUMNS;
EOF
所有好: - )
注意:不要对用户定义的变量使用像$DB_USER
这样的完整大写标识符,因为它可能与内置shell变量冲突。双引号变量也是一种标准做法。
答案 1 :(得分:1)
尝试以下代码:
source ../db.config
echo -e "USE INFORMATION_SCHEMA;\nSELECT * FROM COLUMNS" | mysql -u $DB_USER -p$DB_PASS -s -B -q > ../tmpsql/columns.txt
答案 2 :(得分:1)
您不需要重新发明轮子来获取mysql登录凭据。使用mysql_config_editor存储您在〜/ .mylogin.cnf中加密的凭据,然后您可以通过一个简单的单行代码完成整个事务,例如
mysql -s -B -q -e "select * from information_schema.columns" | tee ./tmpsql/columns.txt