如何从2个文件中读取
我试图制作一个脚本来连接MySQL。如何从2个文件中读取
从一个文件读取主机和另一个文件的MySQL密码,但是我遇到了问题。
当我尝试执行脚本它返回我这个错误:
./do: line 15: syntax error: unexpected end of file
的代码是这样的:
#!/bin/bash
FILE=$1
INFO=$2
cat $FILE | while read HOST;
cat $INFO | while read INFO;do
DBS=`mysql -u root -p $INFO -h $HOST --connect_timeout=4 -Bse'show databases' | wc -l`
if [ "$DBS" -gt "0" ]; then
echo $HOST - mysql - $DBS >> log.sql
fi
sleep 0.1
done
哪里是我的错?
萨吕DRAGOS,
不能使用两个while循环(您解决语法错误,甚至之后),从两个不同的文件同时读取。
相反,你可以使用粘贴两个文件首先将使用,然后执行你的循环:
#!/bin/bash
hostnames="$1"
passwords="$2"
while IFS=$'\t' read host password; do
dbs=$(mysql -u root -p "$password" -h "$host" --connect_timeout=4 -Bse'show databases' | wc -l)
[ $dbs -gt 0 ] && echo "$host - mysql - $dbs" >> log.sql
done <<<"$(paste "$hostnames" "$passwords")"
这个脚本会正确处理与空格的文件名,以及主机名和包含空格的密码。
secound我解决了,不需要任何答复 – 2013-05-13 15:16:10
不完全正确,你可以读''读取两个不同的文件描述符。 – 2013-05-13 15:20:20
@AdrianFrühwirth:当然,你可以在'while read ...&read ...'的时候做',但是你必须在while循环之前明确地打开文件描述符,这对于这种情况来说看起来很麻烦。还是有更快的方法来读取两个不同的描述符? – 2013-05-13 17:14:34
@MichaelGardner同样的错误,我试过了 – 2013-05-13 14:03:30
这个错误信息让我有些惊讶,但你似乎有两个时间,只有一个完成了。这是行不通的。 – 2013-05-13 14:04:01
你有2个'while'语句,并且只有一套'do' /'done'。 – 2013-05-13 14:04:22