macos - 伪终端不会分配,因为标准输入不是终端&困惑 : ttyname failed: Inappropriate ioctl for device

标签 macos shell ubuntu oh-my-zsh

我写了一个shell脚本来scp、ssh、删除一个目录、解压缩并删除zip文件

#!/bin/bash

tar -czf zipfile.tar.gz ./* .??*
scp zipfile.tar.gz root@some.ip.address:/var/www/html/wp-content/themes
rm zipfile.tar.gz

ssh root@some.ip.address << 'ENDSSH'
cd /some/directory
rm -rf zipfile
mkdir zipfile
tar xf zipfile.tar.gz -C zipfile
rm zipfile.tar.gz
ENDSSH


我注意到文件已成功传输并解压缩。 zip 文件也已成功从服务器中删除。
但是,我注意到我在终端中收到了这些消息

zipfile.tar.gz  100% 224KB ...
Pseudo-terminal will not be allocated because stdin is not a terminal.
...
Welcome to Ubuntu 18.04.3 LTS...
...

0 packages can be updated.
0 updates are security updates.

mesg: ttyname failed: Inappropriate ioctl for device

在第二个 block (ENDSSH)之前运行脚本似乎不会输出这些消息并成功执行。

ENDSSH导致问题?

最佳答案

你可以这样写:

ssh -tt root@some.ip.address << ENDSSH
your code
exit
ENDSSH

你试试看。

关于macos - 伪终端不会分配,因为标准输入不是终端&困惑 : ttyname failed: Inappropriate ioctl for device,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58296997/

相关文章:

Docker 安装/tmp/pulseaudio 给出错误

linux - 从哪里获得 gedit 主题

c++ - 在 Ubuntu 上通过 C++ 的 system() 将输出与 SIPp 远程命令混淆

bash - 为什么在 bash shell 上运行 "echo $-"输出 "himBH"?

macos - 如何使用 homebrew 获取 avidemux

java - 将值传递给 Channel System.in

linux - Shell 脚本定时任务

c++ - Mac 上的 Qt : boost filesystem library - symbols not found for architecture x86_64

java - 为什么旋转窗口的背景在 Mac 而不是 Windows 上发生变化?

bash - 获取base64版本的密码