Я тестирую сценарий для написания заранее определенного сообщения другому пользователю. Начинаю с попытки писать себе (два входа на одну машину). Сценарий зависает без доставки сообщения, пока я не завершу вручную нажатием ctrl + c на отправляющем входе в систему, после чего принимающий логин показывает только то, что я отправил EOF. Сценарий следующий:
#!/bin/bash
write myName
message
!kill $$
Даже когда я раскомментирую команду kill, похоже, что команда записи не видит следующего сообщения. Когда я теряю отправителя с помощью ctrl + c, я вижу следующее ....
[....]$ ./writeScript.sh
write: myName is logged in more than once; writing to pts/112 (hangs here)
^C./writeScript.sh: line 3: message: command not found
Terminated
[...]$
И ресивер видит ...
Message from myName@myPlace on pts/143 at 09:53 ...
EOF
Как мне сделать так, чтобы это сообщение было успешно отправлено? Спасибо.
1 ответ
Вам нужно дать ввод, чтобы написать. Что-то вроде:
#!/bin/bash
write myName << EOM
message
EOM
Или же:
echo message | write myName
Похожие вопросы
Новые вопросы
bash
Для вопросов о скриптах, написанных для командной оболочки Bash. Для сценариев оболочки с ошибками / синтаксическими ошибками, пожалуйста, проверьте их с помощью программы shellcheck (или на сервере веб-проверки оболочки по адресу https://shellcheck.net) перед размещением здесь. Вопросы об интерактивном использовании Bash, скорее всего, будут касаться темы Super User, а не переполнения стека.
echo "text\nover\nmultiple\nlines" | write myName
(просто заключите несколько строк в кавычки.){ echo m1; echo m2; echo m3; } | write myName
\n
в строку, передаваемую в echo. Скорее, я помечу буквальные символы новой строки в комментарии с помощью\n
, чтобы, если бы вы вводили пример в интерактивном сеансе, вы бы набралиecho "text<hit return>over....