我怎样才能摆脱bash:$ 1:xargs命令的模糊重定向

时间:2016-07-27 21:04:43

标签: mysql bash

我正在尝试在给定数据库上执行带有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

你能帮我吗?

2 个答案:

答案 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 < '{}'"