if и амперсанд

На самом деле это единственный раздел про unix на этом форуме

Модератор: /dev/random

kotnaton
Сообщения: 232

if и амперсанд

Сообщение kotnaton »

Прошу прощения за примитивный вопрос.

Есть такая строка

Код: Выделить всё

if [[ -f ~/rtorrent/session/rtorrent.lock ]] ; then rm ~/rtorrent/session/rtorrent.lock ; "rtorrent &" ; else "rtorrent &" ; fi
"rtorrent &" (в кавычках) даёт ошибку

Код: Выделить всё

bash: rtorrent &: команда не найдена
rtorrent & (без кавычек) даёт другую:

Код: Выделить всё

bash: синтаксическая ошибка рядом с неожиданным маркером «;»
Как, собственно, экранировать знак "амперсанд", чтобы он воспринимался в скрипте как в терминале, то есть запуск программы в фоне ?
бывает же такое ???
Спасибо сказали:
Аватара пользователя
lone_wolf
Сообщения: 204

Re: if и амперсанд

Сообщение lone_wolf »

Если память не изменяет то обратные кавычки над клавише Ё, но эт не точно :scratch_one-s_head:
Спасибо сказали:
Аватара пользователя
Vascom
Сообщения: 1699
ОС: Fedora 32

Re: if и амперсанд

Сообщение Vascom »

Напиши в несколько строк, без точек с запятой.
И зачем тебе двойные квадратные скобки? Достаточно одинарных
Спасибо сказали:
Аватара пользователя
Vascom
Сообщения: 1699
ОС: Fedora 32

Re: if и амперсанд

Сообщение Vascom »

Но даже не это главное. Так будет вести себя любая команда, даже ls &; echo a.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 19369
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: if и амперсанд

Сообщение Bizdelnick »

Уберите кавычки и следующую за & точку с запятой.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
kotnaton
Сообщения: 232

Re: if и амперсанд

Сообщение kotnaton »

Bizdelnick, спасибо ! :) Собственно, так у меня и было в начале, но в таком случае там вообще чёрт знает что выскакивает:

Код: Выделить всё

Caught internal_error: PollEPoll::modify(...) epoll_ctl(7, 1 -> 1, 0, [0x563147e1f960:1]) = 
1: Операция не позволена
/usr/lib/libtorrent.so.20(_ZN7torrent14internal_error10initializeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE+0x24f) 
[0x7fadf711e51f]
rtorrent(_ZN7torrent14internal_errorC1EPKc+0x8f) [0x5631478368ef]
/usr/lib/libtorrent.so.20(_ZN7torrent9PollEPoll6modifyEPNS_5EventEij+0x226) [0x7fadf7137196]
rtorrent(+0x7f35a) [0x56314783235a]
rtorrent(+0x35a0f) [0x5631477e8a0f]
/usr/lib/libc.so.6(__libc_start_main+0xeb) [0x7fadf5f6406b]
rtorrent(+0x363da) [0x5631477e93da]
бывает же такое ???
Спасибо сказали:
Аватара пользователя
nerve
Сообщения: 280
ОС: OpenBSD

Re: if и амперсанд

Сообщение nerve »

а без условия что не обойтись?

Shell

rm -f ~/rtorrent/session/rtorrent.lock && /path/to/rtorrent &
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 19369
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: if и амперсанд

Сообщение Bizdelnick »

kotnaton писал(а):
03.08.2018 15:17
в таком случае там вообще чёрт знает что выскакивает
Ну это уже с самим rtorrent разбирайтесь.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
olecya
Сообщения: 666
ОС: debian, fedora (i3-wm)

Re: if и амперсанд

Сообщение olecya »

Shell

if [[ -f ~/rtorrent/session/rtorrent.lock ]] ; then rm ~/rtorrent/session/rtorrent.lock ; rtorrent & else rtorrent & fi
Или так

Shell

if [[ -f ~/rtorrent/session/rtorrent.lock ]] ; then
rm ~/rtorrent/session/rtorrent.lock
rtorrent &
else
rtorrent &
fi
Спасибо сказали: