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


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

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

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

Оффлайн Electricity

  • Автор темы
  • Активист
  • *
  • Сообщений: 250
    • Просмотр профиля
Первая строчка
Код: (Bash) [Выделить]
        if [ x"$user" = x"" ]; then
                startx=`pgrep -n startx`
                if [ x"$startx" != x"" ]; then
                        user=`ps -o user --no-headers $startx`
                fi
        fi

Что делает скрипт не важно. Конструкция сравнения что делает? И почему там одиночный знак равенства?
Kubuntu 18.04 amd64, Qt: 5.9.5, KDE Frameworks: 5.44.0, plasmashell 5.12.7, корпус чёрный, клава белая

Оффлайн EvangelionDeath

  • Администратор
  • Старожил
  • *
  • Сообщений: 3487
  • Ubuntu 22.04 х64
    • Просмотр профиля
Electricity,
1) сравнивает строки
2) = - синоним ==
https://www.opennet.ru/docs/RUS/bash_scripting_guide/x2565.html
HP Pro 840 G3: Intel i5-6300U, 32GB DDR4 2133MHz, Intel 520, Intel Pro 2500 180GB/Ubuntu 22.04
Dell Latitude 5590: Intel i5-8350U, 16GB DDR4 2400MHz, Intel 620, Samsung 1TB/Ubuntu 22.04

Оффлайн Electricity

  • Автор темы
  • Активист
  • *
  • Сообщений: 250
    • Просмотр профиля
Код: (Bash) [Выделить]
f [ x"$user" = x"" ]То же самое что
Код: (Bash) [Выделить]
f [ "x$user" = "x" ]
Думал что-то новое, спасибо.
Kubuntu 18.04 amd64, Qt: 5.9.5, KDE Frameworks: 5.44.0, plasmashell 5.12.7, корпус чёрный, клава белая

Оффлайн Azure

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

Оффлайн Electricity

  • Автор темы
  • Активист
  • *
  • Сообщений: 250
    • Просмотр профиля
Azure, вот и меня смутило, зачем такие сложности, думал засекреченный синтаксис  :)
Kubuntu 18.04 amd64, Qt: 5.9.5, KDE Frameworks: 5.44.0, plasmashell 5.12.7, корпус чёрный, клава белая

Оффлайн Azure

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

 

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