if и амперсанд

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

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

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

if и амперсанд

Сообщение kotnaton » 03.08.2018 14:34

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

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

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

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

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

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

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

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

Аватара пользователя
lone_wolf
Сообщения: 177

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

Сообщение lone_wolf » 03.08.2018 14:41

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

Аватара пользователя
Vascom
Сообщения: 1489
ОС: Fedora 30

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

Сообщение Vascom » 03.08.2018 14:41

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

Аватара пользователя
Vascom
Сообщения: 1489
ОС: Fedora 30

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

Сообщение Vascom » 03.08.2018 14:47

Но даже не это главное. Так будет вести себя любая команда, даже ls &; echo a.
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 15749
Статус: grammatikführer
ОС: Debian GNU/Linux

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

Сообщение Bizdelnick » 03.08.2018 14:55

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

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

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

Сообщение kotnaton » 03.08.2018 15:17

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
Сообщения: 267
ОС: OpenBSD

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

Сообщение nerve » 03.08.2018 15:24

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

Shell

rm -f ~/rtorrent/session/rtorrent.lock && /path/to/rtorrent &
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 15749
Статус: grammatikführer
ОС: Debian GNU/Linux

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

Сообщение Bizdelnick » 03.08.2018 15:26

kotnaton писал(а):
03.08.2018 15:17
в таком случае там вообще чёрт знает что выскакивает
Ну это уже с самим rtorrent разбирайтесь.
Пишите правильно:
в консоли
вкупе (с чем-либо)
в общем
вообще
в течение (часа)
команда
новичок
нюанс
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

Аватара пользователя
olecya
Сообщения: 32
ОС: debian, fedora (i3-wm)

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

Сообщение olecya » 04.08.2018 11:54

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
Спасибо сказали: