Ваш sed
трубопровод немного задом наперед:
sed 's/w/f/g' | sed 's/f/zzzzz/g' <<< "$line"
Это приведет к тому, что первый sed
будет читать из стандартного ввода, т. е. ваших строк 456
и 789
, а второй sed
будет читать$line
(123
). Канал остановит выход первого sed
от получения куда-либо , поскольку второй sed
не читает из него.
Я предполагаю, что вы хотите, чтобы первыйsed
читал строку, а второй sed
считывал вывод первого.
Вы бы сделали это либо с
{ sed 's/w/f/g' | sed 's/f/zzzzz/g'; } <<< "$line"
или
sed 's/w/f/g' <<<"line" | sed 's/f/zzzzz/g'
Также обратите внимание, что в этом случае вы можете объединить два вызова sed
в один:
sed 'y/w/f/; s/f/zzzzz/g' <<<"$line"
или,
sed -e 'y/w/f/' -e 's/f/zzzzz/g' <<<"$line"
Я дополнительно изменил первое выражение, чтобы использовать команду y
, которая заменяет отдельные символы во всей строке.
Однако очень редко рекомендуется вызывать sed
для отдельных строк ввода. Если вам не нужен вывод echo
, ваш скрипт можно упростить до
#!/bin/sh
sed 'y/w/f/; s/f/zzzzz/g'
или даже
#!/usr/bin/sed -f
y/w/f/
s/f/zzzzz/g
Возможно, вам придется настроить оператор mailer
в файле конфигурации, как описано в руководстве . Либо используйте оператор типа sendmail://progname
, если msmtp придерживается совместимости с sendmail, либо используйте что-то вроде prog://pathname[?query]
, как описано на этой странице .
Как найти глобальный или локальный файл конфигурации также объясняется в руководстве . Обычно это /etc/mailutils.config для глобального файла конфигурации или~/.mail для локального файла конфигурации.
Это сработало
Изhttps://moritzvd.com/email-with-smtp-debian-ubuntu/
Чтобы иметь возможность использовать команду mail, нам необходимо установить mailx
sudo apt-get install bsd-mailx
Настроить агент транспорта почты на использование msmtp
sudo nano /etc/mail.rc
добавить следующее:
set mta=/usr/bin/msmtp