Я хочу написать сценарий sed, в котором эхо отключено, например

#!/bin/sed -n -f
s/x/u/g

Но это дает мне

Invalid option -- ' '

Ошибка.

Как я могу это сделать?

0
U.W. 9 Янв 2020 в 11:20
1
Есть ли в сценарии странные/непечатаемые символы (может быть, неразрывный пробел)? Попробуйте распечатать скрипт с помощью LC_ALL=C cat -vt scriptname и посмотрите, не покажет ли он что-нибудь странное. Если проблема не устранена, добавьте информацию о своей ОС и версии sed.
 – 
Gordon Davisson
9 Янв 2020 в 11:41
Что вы подразумеваете под -f без имени файла?
 – 
choroba
9 Янв 2020 в 11:45
 – 
choroba
9 Янв 2020 в 11:47

1 ответ

Это потому, что вы пытались передать более одного аргумента в шебанге. Сравнивать:

В этом конкретном случае вы можете сжать -n -f до -nf. В общем случае это не всегда возможно. Здесь будет скрипт:

#!/bin/sed -nf
s/x/u/g

Примечание. Мне кажется, что скрипт в его нынешнем виде ничего не напечатает из-за -n. Я предполагаю, что вы собираетесь расширить его.

5
Kamil Maciorowski 9 Янв 2020 в 12:41
2
Также обратите внимание, что -fn, скорее всего, не будет работать.
 – 
Kusalananda
9 Янв 2020 в 12:46