我有以下脚本,它可以正常工作,直到安装 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
,因此我希望脚本继续不间断。
- GNU bash,版本 4.1.5(1)-release (i486-pc-linux-gnu)
- Ubuntu 10.04,取自http://files.vagrantup.com/lucid32.box的流浪者“清醒”盒子
JRuby 安装命令是成功还是失败与脚本无关,因为它不检查返回代码以应用任何逻辑。
我的猜测是问题出在上一个命令上。首先,您是否收到 sudo 提示输入密码?二、“install.sh”如何结束?它可能会退出;因为它在同一个 shell 中运行,所以会导致您的 shell 退出。为了防止这种情况发生,您可能希望在辅助 shell 中运行它,通常通过使用类似
sh ./install.sh
.