Попробуйте это, возможно, это может помочь:
autoreconf --install
(См. страницу справочника, существует a --force
опция также)
Использовать ${ }
к корпусу переменная.
Без фигурных скобок:
VAR="foo"
echo $VAR
echo $VARbar
дал бы
foo
и ничто, потому что переменная $VARbar
не существует.
С фигурными скобками:
VAR="foo"
echo ${VAR}
echo ${VAR}bar
дал бы
foo
foobar
Включение первого $VAR
не необходимо, но хорошая практика.
Для Вашего примера:
#!/bin/sh
WEBSITE="danydiop"
/usr/bin/mysqldump --opt -u root --ppassword ${WEBSITE} > ${WEBSITE}.sql
Это работает на bash
, zsh
, ksh
, возможно, другие также.
Просто свяжите переменное содержание к тому, что Вы хотите связать, например.
/usr/bin/mysqldump --opt -u root --ppassword "$WEBSITE" > "$WEBSITE.sql"
Двойные кавычки не связаны с конкатенацией: здесь >$WEBSITE.sql
работал бы также. Они необходимы вокруг переменных расширений, когда значение переменной могло бы содержать некоторые специальные символы оболочки (пробел и \[?*
). Я настоятельно рекомендую поместить двойные кавычки вокруг всех переменных расширений и управляю заменами, т.е. всегда пишу "$WEBSITE"
и "$(mycommand)"
.
Для получения дополнительной информации посмотрите $VAR по сравнению с $ {VAR} и заключить в кавычки или не заключить в кавычки.
Я обычно использую кавычки, например. echo "$WEBSITE.sql"
.
Таким образом, Вы могли записать это как:
#!/bin/sh
WEBSITE="danydiop"
/usr/bin/mysqldump --opt -u root --ppassword $WEBSITE > "$WEBSITE.sql"
.
не допустимый символ в имени переменной; см. ответ взмаха, если Вы хотите связать строку, которая действительно запускается с допустимых символов (например, "$WEBSITEsql" не работал бы),
– Michael Mrozek♦
04.01.2011, 16:58