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

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

Например,

#!/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" 
  • Чтение переменных без bash из файла в скрипт bash
  • Как добавить текст в переменную в make-файле?
  • Используйте sed для извлечения переменной из 1 файла и поместите ее в другую
  • Использование eval в файле make
  • Может ли awk использовать идентификаторы полей также для строк оболочки (переменных)?
  • Как назначить вывод команды переменной без запуска команды в подоболочке?
  • bash - добавить пустую строку в heredoc через переменную
  • команда `read` не работает в Makefile
  • Команда rm в скрипте bash не работает с переменной
  • Передача переменной из одного сценария в другой
  • Как распространять значение переменной
  • Interesting Posts

    Заменить символическую ссылку, связанную с целевым каталогом

    Почему труба не работает с кошкой и располагается?

    xargs и линейный трубопровод

    x11vnc оконный менеджер

    Случайное изменение разрешений в /

    Удалить созданный файл через x минут

    Есть ли способ заставить socat не открывать целевое соединение, пока оно не получит соединение прослушивателя?

    В чем разница между / etc и / usr / local / etc?

    Значение определенных папок в дереве ядра linux

    Как изменить текущую позицию копии или пропустить область в ddrescue

    Как узнать, какой загрузчик вы используете в черном небольшом дистрибутиве linux?

    Firefox – чтение URL-адресов открытых вкладок из командной строки

    Проблема с httpd: Не удалось достоверно определить полное доменное имя сервера

    Скопируйте последние использованные файлы общего размера

    Postfix – не удается отправить почту в Интернет (например, Gmail)

    Linux и Unix - лучшая ОС в мире.