【发布时间】:2016-07-29 03:41:18
【问题描述】:
我正在尝试在给定数据库上使用 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
你能帮帮我吗?
【问题讨论】:
-
ls -lah | grep "sql$" | awk '{打印 $9}' | xargs | mysql -uanuser -papassword a_database
-
嗨@IndraUprade,它试过但给我这个错误:
bash: $1: ambiguous redirect xargs: echo: terminated by signal 13 -
另一个问题是
xargs已经从管道获取其标准输入,并且<应用xargs,而不是mysql。据我所知,不可能使用xargs运行命令并从标准输入中读取。 -
谢谢@chepner 我会尝试另一种方法问候。
-
如果你仍然热衷于使用
xargs,你可以find . -name \*.sql -print0 | xargs -n1 -I{} -0 bash -c "mysql -uanuser -papassword a_database < '{}'"。