У меня есть этот скрипт:переменная в Баш скрипт не работает, как ожидалось
#!/bin/bash
VAR="eric.sql"
sudo mysqldump -c -u username -p1234 dbname > $VAR
Но если я запустить этот сценарий, я получаю эту ошибку:
: Protocol error 3: mysql-export.sh: cannot create eric.sql
Но если я не использую переменную , но только это:
#!/bin/bash
VAR="eric.sql"
sudo mysqldump -c -u username -p1234 dbname > eric.sql
... он хорошо работает. Что я не так?
Есть ли у вашего сценария линейные окончания DOS? Dos работает 'dos2unix' на этом проблема? –
Боковое примечание (основная проблема почти наверняка, как предлагает Etan): Всегда цитируйте свои расширения. '>" $ var "', а не '> $ var'. В противном случае имена файлов с пробелами в них не будут работать. Также: не используйте имена всех верхних букв для собственных переменных; по соглашению, такие имена зарезервированы для встроенных оболочек оболочки и переменных среды; использование имен нижнего регистра для ваших собственных переменных означает, что вы не будете перезаписывать то, что меняется, как другие программы ведут себя по ошибке. –
Кстати, из любопытства, в чем тут ОС и файловая система? Большинство файловых систем UNIX позволят создавать файлы с '$ '\ r'' (то есть символами перевода строки) в их именах, такими же запутанными, как и последствия этого. –