我的炮弹无效:
#!/bin/bash
LIST="$(ls -rt *.log.*)"
for i in "$LIST"; do
echo $i
mysql --user=<user> --password=<passwd> <database> < $i
done
结果:./analisys.sh: line 5: $i: ambiguous redirect
你能帮助我吗?
答案 0 :(得分:3)
如果要对每个空格分隔的项目进行操作,则不应展开$LIST
。即删除两个"
。在第一次出现时你也不需要它们。
当您使用echo $i
列出项目时,这应该是显而易见的,我怀疑所有文件一次列出,而不是每次都列出。
#!/bin/bash
LIST=$(ls -rt *.log.*) # THIS LINE CHANGED
for i in $LIST; do # THIS LINE CHANGED
echo $i
mysql --user=<user> --password=<passwd> <database> < $i
done
答案 1 :(得分:0)
另一种方式
cat *.log.* > dump.dump
mysql --user=<user> --password=<passwd> <database> < dump.dump
我想像
mysql --user=<user> --password=<passwd> <database> < `cat *.log.*`
会使它成为1班轮,但我仍然会有模糊的重定向。