我正在尝试在给定数据库上执行带有sql setences的多个文件:
ls -lah | grep "sql$" | awk '{print $9}' | xargs mysql -uanuser -papassword a_database < $1
但是我得到了错误:
bash: $1: ambiguous redirect
如果我将xargs上的命令更改为简单的echo $1
,则可以使用
我已经尝试过这样的双引号:xargs mysql -uanuser -papassword a_database < "$1"
和这个"xargs mysql -uanuser -papassword a_database < $1"
没有运气终端带来了另一个错误:
xargs: mysql -uanuser -papassword a_database < {}: No such file or directory
你能帮我吗?
答案 0 :(得分:1)
您不需要使用ls -l | grep | awk
,必须在*.sql
文件上使用简单的for循环:
for f in *.sql; do
mysql -uanuser -papassword a_database < "$f"
done
答案 1 :(得分:0)
这是xargs方法的工作原理:
ls -lha | grep "sql$" | awk '{print $9}' | xargs -t -n1 -I{} bash -c "mysql -uanuser -papassword a_database < '{}'"