Shellscript с неоднозначной ошибкой перенаправления - PullRequest
1 голос
/ 17 декабря 2010

Мой шеллскрипт не работает:

#!/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

Вы можете мне помочь?

Ответы [ 2 ]

3 голосов
/ 17 декабря 2010

Не следует расширять $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
0 голосов
/ 31 июля 2014

другой способ

cat *.log.* > dump.dump

mysql --user=<user> --password=<passwd> <database> < dump.dump

Я думал что-то вроде

mysql --user=<user> --password=<passwd> <database> < `cat *.log.*`

будет работать, чтобы сделать его 1 лайнером, но я все еще получаю неоднозначное перенаправление.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...