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


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

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

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

Оффлайн alex-sky

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

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

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

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

Код: (Bash) [Выделить]
SHIFT_N=$(${SHIFT_WIDHT}${SHIFT_LEFT})
появится ошибка

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

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

Оффлайн Azure

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

Оффлайн alex-sky

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

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


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

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

Код: (Bash) [Выделить]
SHIFT_N="${SHIFT_WIDHT}${SHIFT_LEFT}"
Конструкция $(...) - может работать вот с таким выражением

Код: (Bash) [Выделить]
SHIFT_WIDHT=$(tput hpa $(tput cols))
Все что сложнее, должно браться в  двойные кавычки, например вот такой скрипт

Код: (Bash) [Выделить]
#!/usr/bin/env bash

LGREEN="\033[1;32m"
LRED="\033[1;31m"
DEF="\033[0;39m"
 
SETCOLOR_SUCCESS="echo -en ${LGREEN}"
SETCOLOR_FAILURE="echo -en ${LRED}"
SETCOLOR_NORMAL="echo -en ${DEF}"
SHIFT_OK="echo -n "$(tput hpa $(tput cols))$(tput cub 6)[OK]""
SHIFT_FAIL="echo -n "$(tput hpa $(tput cols))$(tput cub 6)[FAIL]""
 
$SETCOLOR_SUCCESS
$SHIFT_OK
echo
$SETCOLOR_FAILURE
$SHIFT_FAIL
echo
$SETCOLOR_NORMAL
echo

Оффлайн Azure

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

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

 

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