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

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

Например,

#!/bin/sh WEBSITE="danydiop" /usr/bin/mysqldump --opt -u root --ppassword $WEBSITE > $WEBSITE.sql 

Мне нужно .sql в $WEBSITE

3 Solutions collect form web for “Как я могу объединить переменную оболочки с другими другими параметрами в моих командных строках?”

Используйте ${ } для включения переменной.

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

 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 тоже работал бы. Они необходимы для переменных разложений, когда значение переменной может содержать некоторые специальные символы оболочки (пробелы и \[?* ). Я настоятельно рекомендую вводить двойные кавычки вокруг всех переменных разложений и подстановок команд, т. "$(mycommand)" Всегда писать "$WEBSITE" и "$(mycommand)" .

Подробнее см. В разделе $ VAR vs $ {VAR} и процитировать или не указывать .

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

Таким образом, вы можете написать так:

 #!/bin/sh WEBSITE="danydiop" /usr/bin/mysqldump --opt -u root --ppassword $WEBSITE > "$WEBSITE.sql" 
  • Как сопоставить текст между строкой и пробелом
  • отображение PID
  • Объединение нескольких выходов grep в переменную
  • Как назначить вывод команды переменной без запуска команды в подоболочке?
  • bash - добавить пустую строку в heredoc через переменную
  • Как добавить текст в переменную в make-файле?
  • Shell: как использовать 2 переменные с условием
  • Развертывание Jenkins не передается переменной java
  • Невозможно выполнить сценарий Bash, если / while
  • Попытка присвоения не переменной?
  • Объем переменных при вызове функции из find
  • Linux и Unix - лучшая ОС в мире.