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


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Bash, что означает в условии сравнения x перед двойными кавычками?  (Прочитано 773 раз)

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

Оффлайн Electricity

  • Автор темы
  • Участник
  • *
  • Сообщений: 193
    • Просмотр профиля
Первая строчка
Код: Bash
  1.         if [ x"$user" = x"" ]; then
  2.                 startx=`pgrep -n startx`
  3.                 if [ x"$startx" != x"" ]; then
  4.                         user=`ps -o user --no-headers $startx`
  5.                 fi
  6.         fi

Что делает скрипт не важно. Конструкция сравнения что делает? И почему там одиночный знак равенства?
Kubuntu 17.10 amd64, Qt: 5.9.1, KDE Frameworks: 5.38.0, plasmashell 5.10.5

Оффлайн EvangelionDeath

  • Администратор
  • Старожил
  • *
  • Сообщений: 3113
  • Ubuntu Mate 16.04 х64
    • Просмотр профиля
Electricity,
1) сравнивает строки
2) = - синоним ==
https://www.opennet.ru/docs/RUS/bash_scripting_guide/x2565.html
Fujitsu UH552: Intel Core i3-3217U, 16GB DDR3 1600MHz, Intel HD4000, Intel 535 120GB/Ubuntu 16.04 Mate
HP 625: AMD Athlon P320, 4GB DDR3 1333MHz, AMD HD4250, Seagate Momentus/Ubuntu 14.04 Mate

Оффлайн Electricity

  • Автор темы
  • Участник
  • *
  • Сообщений: 193
    • Просмотр профиля
Код: Bash
  1. f [ x"$user" = x"" ]
То же самое что
Код: Bash
  1. f [ "x$user" = "x" ]

Думал что-то новое, спасибо.
Kubuntu 17.10 amd64, Qt: 5.9.1, KDE Frameworks: 5.38.0, plasmashell 5.10.5

Оффлайн Azure

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 5665
  • elementaryOS 0.4 Loki, i3wm on Debian9
    • Просмотр профиля
Вообще у test появился свой оператор проверки на пусто (приведенная конструкция уж очень давняя)
Код: Bash
  1. if [ -z "$user" ]
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн Electricity

  • Автор темы
  • Участник
  • *
  • Сообщений: 193
    • Просмотр профиля
Azure, вот и меня смутило, зачем такие сложности, думал засекреченный синтаксис  :)
Kubuntu 17.10 amd64, Qt: 5.9.1, KDE Frameworks: 5.38.0, plasmashell 5.10.5

Оффлайн Azure

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 5665
  • elementaryOS 0.4 Loki, i3wm on Debian9
    • Просмотр профиля
Electricity, Это наработанная годами практика. Просто если проводить сравнение строк
Код: XML
  1. [ "$var1" = "sometext" ]
то при пустом значении var1 test выдаст ошибку синтаксиса, чтоб не добавлять еще одну проверку (var1 на пусто) вышли из положения добавлением буквы (чтоб точно не пусто)
Код: XML
  1. [ "х$var1" = "хsometext" ]
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

 

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