shell 脚本编译安装Nginx,如何判断有没有出错(编译或安装这些)?

这是我的install.sh

#!/bin/sh

# linux上nginx,php,mysql集成环境
# Author salamander

basepath=$(cd `dirname $0`; pwd)

# 1. nginx安装

yum install -y gcc gcc-c++

# pcre安装
tar -zxvf pcre-8.40.tar.gz
cd ./pcre-8.40
./configure --prefix=/usr/local/pcre-8.40
make
make install

cd $basepath

# zlib安装
tar -zxvf zlib-1.2.11.tar.gz
cd ./zlib-1.2.11
./configure --prefix=/usr/local/zlib-1.2.11
make
make install

cd $basepath

# openssl安装,注意openssl是./config
tar -zxvf openssl-1.1.0e.tar.gz
cd ./openssl-1.1.0e
./config  
make
make install

cd $basepath

# nginx安装 注意 --with-pcre=  --with-zlib  指的是源码路径
tar -zxvf nginx-1.10.3.tar.gz
cd ./nginx-1.10.3
./configure --prefix=/usr/local/nginx-1.10.3 --with-pcre=./../pcre-8.40  --with-zlib=./../zlib-1.2.11
make
make install

echo 'Nginx installed successfully!'

最后一句话不管正确错误都会出现,这就不好了,怎么解决呢?

阅读 5.3k
4 个回答

开头加一行 set -e, 如果有命令返回非0则立刻停止

shell里面,如果执行成功返回"0",执行失败,返回非零数。

echo $?

./configure & make & make install & echo ...

第一个命令执行成功了才会执行第二个,第二个执行成功了才会执行第三个。第三个执行成功了才会执行第四个

# pcre安装
./configure --prefix=/usr/local/pcre-8.40
make && make install || exit

# zlib安装
./configure --prefix=/usr/local/zlib-1.2.11
make && make install || exit

# openssl安装
./config
make && make install || exit

# nginx安装
./configure --prefix=/usr/local/nginx-1.10.3 --with-pcre=./../pcre-8.40  --with-zlib=./../zlib-1.2.11
make && make install

if [[ $? == 0 ]]; then
    echo 'Nginx installed successfully!'
else
    echo 'xxxx'
fi
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题