2016-01-16 24 views
1

我有一些SQL文件,並希望轉儲到我的本地數據庫,首先我用這個shell命令,但它不工作爲什麼xargs的不能接收參數

ls *.sql|xargs -i mysql -uroot -p123456 foo < {} 
zsh: no such file or directory: {} 

但下面可以工作

echo hello | xargs -i echo {} world 
hello world 

那麼爲什麼第一個命令不起作用?

回答

1

重定向由shell在處理任何命令之前處理。如果你想要xargs來處理重定向,你需要運行一個子shell。

ls *.sql | xargs -i sh -c 'mysql -uroot -p123456 foo < {}' 

然而,你不應該使用ls驅動腳本。你想

for f in *.sql; do 
    mysql -uroot -p123456 foo <"$f" 
done 

或很可能只是

cat *.sql | mysql -uroot -p123456 foo 
相關問題