@Salamandrine

Как работает двойное тире «--»?

Мне необходимо было запускать в скрипте команду от иного (нежели запускающий скрипт) пользователя, для чего я использовал runuser -u username -c 'command'.
Затем мне понадобилось понапихать кучу апострофов и кавычек в несколько слоев в однострочник, и всё порушилось.

Мне предложили обойти проблему через двойное тире
runuser -u username --
и в таком подходе предупреждать используемую команду соответствующим аргументом не требуется.

Не понимаю, как эта штуковина работает.
  • Вопрос задан
  • 150 просмотров
Решения вопроса 1
karabanov
@karabanov
Системный администратор
man bash

-- signals the end of options and disables further option processing. Any arguments after the -- are treated as filenames and arguments. An argument of - is equivalent to --

Сообщает, что опции у запускаемой команды закончились и дальше будут только позиционные аргументы, характерный пример использования найти подстроку -v с помощью grep в текстовом файле: grep -- -v file.txt, если не добавить --, то grep воспримет -v, как свою опцию, а не подстроку для поиска.

Это способ корректно обработать управляющие символы не прибегая к "понапихать кучу апострофов и кавычек в несколько слоев".
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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