Как я могу связать переменную оболочки к другим другим параметрам в моих командных строках?

Попробуйте это, возможно, это может помочь:

autoreconf --install

(См. страницу справочника, существует a --force опция также)

16
12.12.2016, 14:13
3 ответа

Использовать ${ } к корпусу переменная.

Без фигурных скобок:

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, возможно, другие также.

26
27.01.2020, 19:48
  • 1
    Это работает на все оболочки стиля Границы (Граница, POSIX, удар, ksh, zsh), оболочки C-стиля (csh, tcsh), и даже у рыбы без фигурных скобок. Таким образом, это действительно универсально среди оболочек Unix. Я не назвал бы фигурные скобки хорошей практикой. Но я действительно называю систематически двойные кавычки использования вокруг подстановок переменных хорошей практикой. –  Gilles 'SO- stop being evil' 04.01.2011, 22:17
  • 2
    @Gilles, я пошел бы далее и сказал бы, чем не использование двойных кавычек вокруг подстановок переменных является очень плохой практикой. –  Stéphane Chazelas 27.07.2016, 17:46

Просто свяжите переменное содержание к тому, что Вы хотите связать, например.

/usr/bin/mysqldump --opt -u root --ppassword "$WEBSITE" > "$WEBSITE.sql"

Двойные кавычки не связаны с конкатенацией: здесь >$WEBSITE.sql работал бы также. Они необходимы вокруг переменных расширений, когда значение переменной могло бы содержать некоторые специальные символы оболочки (пробел и \[?*). Я настоятельно рекомендую поместить двойные кавычки вокруг всех переменных расширений и управляю заменами, т.е. всегда пишу "$WEBSITE" и "$(mycommand)".

Для получения дополнительной информации посмотрите $VAR по сравнению с $ {VAR} и заключить в кавычки или не заключить в кавычки.

4
27.01.2020, 19:48

Я обычно использую кавычки, например. echo "$WEBSITE.sql".

Таким образом, Вы могли записать это как:

#!/bin/sh
WEBSITE="danydiop" 
/usr/bin/mysqldump --opt -u root --ppassword $WEBSITE > "$WEBSITE.sql"
2
27.01.2020, 19:48
  • 1
    , Это действительно работает с тех пор . не допустимый символ в имени переменной; см. ответ взмаха, если Вы хотите связать строку, которая действительно запускается с допустимых символов (например, "$WEBSITEsql" не работал бы), –  Michael Mrozek♦ 04.01.2011, 16:58

Теги

Похожие вопросы