Форум русскоязычного сообщества Ubuntu


Автор Тема: Использование кавычек при исопльзовании выражений в переменной  (Прочитано 333 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн alex-sky

  • Автор темы
  • Участник
  • *
  • Сообщений: 158
    • Просмотр профиля
При назначении в качестве значения перемененной
 - какое-то выражение, стараюсь не использовать кавычки, но одно выражение выдает ошибку

Вот рабочий скрипт

(Нажмите, чтобы показать/скрыть)

Но если для перемененной употребить вот такой синтаксис

Код: Bash
  1. SHIFT_N=$(${SHIFT_WIDHT}${SHIFT_LEFT})

появится ошибка

Цитировать
./tput-color-v3.sh: строка 14: $'\E[93G\E[6D': команда не найдена

а почему ?
 Может все таки можно избежать кавычек, или Bash просто не в состоянии прочитать такое написание значения переменной?
« Последнее редактирование: 16 Май 2017, 16:29:55 от alex-sky »

Оффлайн Azure

  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 6015
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
стараюсь не использовать кавычки,
== Бью по пальцам молотком, почему-то очень больно…
$'\E[93G\E[6D': команда не найдена
Может потому что такой команды нет \E[93G\E[6D ?
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн alex-sky

  • Автор темы
  • Участник
  • *
  • Сообщений: 158
    • Просмотр профиля
Код: Bash

    SHIFT_N=$(${SHIFT_WIDHT}${SHIFT_LEFT})


появится ошибка

Насколько я понял Bash не может прочитать такой вложенности выражение, поэтому нужно такие выражения оформлять в двойные кавычки

Код: Bash
  1. SHIFT_N="${SHIFT_WIDHT}${SHIFT_LEFT}"

Конструкция $(...) - может работать вот с таким выражением

Код: Bash
  1. SHIFT_WIDHT=$(tput hpa $(tput cols))

Все что сложнее, должно браться в  двойные кавычки, например вот такой скрипт

Код: Bash
  1. #!/usr/bin/env bash
  2.  
  3. LGREEN="\033[1;32m"
  4. LRED="\033[1;31m"
  5. DEF="\033[0;39m"
  6.  
  7. SETCOLOR_SUCCESS="echo -en ${LGREEN}"
  8. SETCOLOR_FAILURE="echo -en ${LRED}"
  9. SETCOLOR_NORMAL="echo -en ${DEF}"
  10. SHIFT_OK="echo -n "$(tput hpa $(tput cols))$(tput cub 6)[OK]""
  11. SHIFT_FAIL="echo -n "$(tput hpa $(tput cols))$(tput cub 6)[FAIL]""
  12.  
  13. $SETCOLOR_SUCCESS
  14. $SHIFT_OK
  15. echo
  16. $SETCOLOR_FAILURE
  17. $SHIFT_FAIL
  18. echo
  19. $SETCOLOR_NORMAL
  20. echo

Оффлайн Azure

  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 6015
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
alex-sky, не несите бред и не пытайтесь своими измышлизмами заменять инструкции и руководства. Откройте man bash и прочитайте для чего нужны кавычки, а также про «конструкции $(...) и `…`».

Да и хотелось бы понять на кой Вы постите тут свою гарячечную галиматью? Поднимаемые вопросы изложены в справочниках четко и понятно, а то что Вы не удосужились с ними ознакомится не делает форум Вашим личным ЖЖ
« Последнее редактирование: 16 Май 2017, 17:41:52 от Azure »
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

 

Страница сгенерирована за 0.247 секунд. Запросов: 22.