Ожидайте париков, когда я использую одинарную кавычку в [exec ls -h | grep '\.foo' ]

В systemd версии 232 будет опция для отключения слушателя-заглушки. See https://github.com/systemd/systemd/pull/4061.

2
07.09.2018, 00:16
1 ответ

Проблема в том, что одинарные кавычки не являются особыми для tcl, поэтому вы на самом деле запускаете команду grepс аргументом '\.foo', включая кавычки, которые обычно должны быть удалены оболочкой.

Это приводит к тому, что grepне соответствует, поэтому он завершается с кодом ошибки, отличным от -нулевым, и поэтому команда execпередает ошибку.

Немедленный ответ — использовать tclдвойные -кавычки(grep -E "\\.foo")или без кавычек(grep -E \\.foo)или фигурные -кавычки(grep -E {\.foo}). Но альтернатива — не прибегать к командам оболочки. Эквивалентом в tclможет быть:

set fullfiles [glob *.foo]
foreach f $fullfiles { lappend files [string trimright $f.foo] }
4
27.01.2020, 21:58

Теги

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