apt-get install 后的命令未在脚本中执行

apt-get install 后的命令未在脚本中执行

我写了一个问题关于 Server Fault,但我猜它更适用于这个社区。

我正在编写一个脚本,用于初始设置我的 Droplet。在脚本中,我将打开与我的 Ubuntu 14.04 服务器的 SSH 连接,如下所示(使用先前定义的USER变量REMOTE):

ssh -t -t $USER@$REMOTE <<'ENDSSH'
ENDSSH

在该 SSH 连接中,我有多个想要执行的命令 - 安装 Node.js、更新 npm、安装 MongoDB 等等。

但是,一旦我执行一个apt-get install命令,其他命令就不会执行。

所以,如果我有这个:

ssh -t -t $USER@$REMOTE <<'ENDSSH'
sudo apt-get update
sudo apt-get install -y nodejs
sudo apt-get install -y npm
ENDSSH

命令sudo apt-get install -y npm不会被执行。现在,我知道我可以在同一apt-get install命令中安装多个软件包,但这不是我要问的,因为之后的其他命令将不会被执行。我只是为了简单起见写了这个例子,这样我就可以解释我的问题。具体来说,我有以下命令:

ssh -tt $USER@$REMOTE <<'ENDSSH'
curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash -
sudo apt-get install -y nodejs
sudo npm install -g npm
ENDSSH

命令sudo npm install -g npm和其后的所有内容都不会被执行。

我遇到了类似的问题这个他们说我在打开连接时应该放置多个-t标志(或) ,我正在这样做,但这没有帮助。-ttssh

我究竟做错了什么?

答案1

您可能希望以 结尾,&&以便脚本仅在命令完成时继续执行。例如:

ssh -t -t $USER@$REMOTE <<'ENDSSH'
sudo apt-get update &&
sudo apt-get install -y nodejs &&
sudo apt-get install -y npm
ENDSSH

相关内容