Запуск нескольких скриптов в фоновом режиме и немедленно возвращается

Ваши два вопроса в основном совпадают. В регулярных выражениях * означает «сопоставить предыдущий символ 0 или более раз». Таким образом, 1 * будет соответствовать 0 или более 1 , но 11 * будет соответствовать 1 , за которым следует 0 или более 1 . Это означает, что

  • grep "11 *" будет печатать только строки, содержащие как минимум один 1 . * применяется только ко второму 1 , поэтому первое является обязательным. Вот почему вы не видите пустых строк, они не соответствуют 1 .

  • grep "1 *" будет соответствовать 0 или более 1 . Здесь у вас нет предшествующего символа, который нужно сопоставить, поэтому пустые строки также сопоставляются, потому что они содержат 0 1 .

  • grep "111 *" , grep "1111 *" и т. Д. Не совпадают по той же причине, что и первый пункт выше. 111 * будет печатать только строки, содержащие как минимум 2 1 , а возможно и больше. 1111 * будет соответствовать строкам, содержащим как минимум 3 1 , возможно, больше.

Главное здесь в том, что * влияет только на символ непосредственно перед ним, а не на весь узор. Чтобы задать квантор для всего шаблона, вы можете использовать круглые скобки:

$ grep '\(111\)*' regex.txt 
1
11
111
1111
11111





$    

Здесь круглые скобки (их нужно экранировать с помощью \ , чтобы они не были включены в шаблон поиска) группируют символы вместе поэтому к группе применяется * .Как вы видите выше, это соответствует строкам, содержащим 0 или более вхождений 111 , поэтому печатаются все строки.

0
06.08.2018, 15:36
1 ответ

Is it similar to nohup for Ruby? Add a new line of nohup after that for each script? Will those introduce any delay in handing back control?

Шаблон, который вы установили с помощью nohup, за которым следует ваша команда в фоновом режиме &и запись PID $!в файл, является типичным шаблоном, который вы увидите для такого типа работы.

Просто продолжайте использовать этот шаблон и создайте фон для всех процессов, которые вы хотите запустить таким образом, и запишите их PID в файлы.

And if I want to delegate this to another executable bash file, will it be a simple case of copying all those nohup commands to the new bash file and return control to the Wifi manager immediately? Will this be much better? How can I do this then?

Да, вы можете переместить все эти команды в другой скрипт и просто вызвать их одним вызовом. Трудно сказать, лучше это или хуже, это полностью зависит от того, чего вы пытаетесь достичь и как вы хотите управлять этими вещами.

Что касается того, как это сделать, похоже, вы уже знаете, что делать. Поместите все в скрипт и вызовите его из приложения WiFi-менеджера.

Возможно, вам потребуется передать в этот сценарий некоторые аргументы. Для этого вы можете просто использовать вызов этого скрипта вот так:

my_sub_cmd.bash $arg1 $arg2

Затем внутри этой команды вы передаете аргументы строки команды -через $1, $2и т. д.

0
28.01.2020, 04:15

Теги

Похожие вопросы