为什么这个脚本在 Ubuntu 10.04 中停止/无法继续

为什么这个脚本在 Ubuntu 10.04 中停止/无法继续

我有以下脚本,该脚本运行正常,直到脚本末尾安装 JRuby 的行1.7.0.RC2起作用,但随后脚本停止。

$?在脚本末尾添加了尝试让它输出上一行的退出代码,但错误代码不会被打印。

#!/bin/bash

# Update OS
sudo apt-get -y update
sudo apt-get -y upgrade 

# Install package dependencies
sudo apt-get -y install git-core curl make g++ openjdk-6-jre-headless ant openjdk-6-jdk redis-server

# Install rbenv
cd ~
git clone git://github.com/sstephenson/rbenv.git ~/.rbenv
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
source ~/.bashrc
source ~/.bash_profile

# Install ruby-build:
cd ~
git clone git://github.com/sstephenson/ruby-build.git
cd ruby-build
sudo ./install.sh

# Install JRuby 1.7.0.RC2
echo 'install_package "jruby-1.7.0.RC2" "http://jruby.org.s3.amazonaws.com/downloads/1.7.0.RC2/jruby-bin-1.7.0.RC2.tar.gz" jruby' > jruby-1.7.0-rc2
~/.rbenv/bin/rbenv install jruby-1.7.0-rc2
$?

# /\ That last line never gets run
# \/ I excluded the rest of script, as the problem seems to be right here
...

如果我手动运行 JRuby 安装命令(在控制台中复制/粘贴),退出代码是0,所以我希望脚本能够不间断地继续运行。

答案1

JRuby 安装命令是否成功或失败对于脚本来说并不重要,因为它不会检查返回代码来应用任何逻辑。

我猜问题出在上一个命令上。首先,你收到 sudo 提示输入密码了吗?其次,“install.sh”是如何结束的?它可能会退出;因为它在同一个 shell 中运行,所以这会导致你的 shell 退出。为了防止这种情况发生,你需要在辅助 shell 中运行它,通常使用类似sh ./install.sh.

相关内容