(1)比较两个只= ( -a 看做逻辑与)
(2)== 判断存在 ( -a 看做判断文件是否存在)

例如:
(1) 条件判断组合 ( -a 看做逻辑与)
注:[] 与[[ ]] 的区别:[[ ]] 中逻辑组合可以使用 && || 符号
而[] 里面逻辑组合可以用 -a -o

[root@mini ~]# if [ a = b && b = c ]; then echo ok;else echo notok;fi
-bash: [: missing `]'
notok

[root@mini ~]# if [ a = b -a b = b ]; then echo ok;else echo notok;fi
notok
[root@mini ~]# if [ a = b -o b = b ]; then echo ok;else echo notok;fi
ok

[root@mini ~]# if [[ a = b && b = b ]]; then echo ok;else echo notok;fi
notok
[root@mini ~]# if [[ a = b || b = b ]]; then echo ok;else echo notok;fi
ok

(2)-a在==号后面( -a 看做判断文件是否存在)
这是一键安装的脚本里的代码
https://github.com/wangsenfeng/oneStepInstall
installProfile.sh

#!/bin/bash

#如果非安装用户,退出安装
if [ $USER != "root" ]; then
echo "这个脚本必须用root执行!!!"
exit
fi

#获取本sh文件的绝对路径
readonly INITDIR=$(readlink -m $(dirname $0))

#加载配置文件
source $INITDIR/init.conf
#配置环境变量
SOFT_HOME=$SOFT_INSTALL_DIR/$INSTALL_SOFT
SOFT_HOME_PROFILE=$(echo $INSTALL_SOFT | tr '[a-z]' '[A-Z]')_HOME

if [ -z "`grep "$SOFT_HOME_PROFILE" /etc/profile`" -o -z "`grep "$SOFT_INSTALL_DIR/$INSTALL_SOFT" /etc/profile`" ];
then
        #$INSTALL_SOFT == "jdk"        如果安装的软件是jdk
        #grep "CLASSPATH" /etc/profile    获取/etc/profile文件里的CLASSPATH变量值
        # -a "/etc/profile"        判断一个文件是否存在
        # -z ""   判断双引号的的字符串长度是否为0

    if [ $INSTALL_SOFT == "jdk" -a -z "`grep "CLASSPATH" /etc/profile`" ]; then
        echo "export JAVA_HOME=$SOFT_INSTALL_DIR/$INSTALL_SOFT" >> /etc/profile
        echo 'export PATH=$PATH:$JAVA_HOME/bin' >> /etc/profile
        echo 'export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar' >> /etc/profile
    else
        if [ $INSTALL_SOFT != "jdk" ]; then
        echo "export $SOFT_HOME_PROFILE=$SOFT_INSTALL_DIR/$INSTALL_SOFT" >> /etc/profile
        echo 'export PATH=$PATH:$'"$SOFT_HOME_PROFILE/bin" >> /etc/profile
        fi
    fi
fi

init.conf

#安装什么软件?(小写)例子:jdk、hadoop、hive、storm、flume、kafka、hbase、spark、sqoop等
INSTALL_SOFT=storm

#软件下载路径
SOFT_DOWNLOAD_PATH=http://192.168.56.151/hadoop-2.6.0.tar.gz

#安装在哪个目录?
SOFT_INSTALL_DIR=/home/hadoop

#用哪个用户安装?
SOFT_USER=hadoop

这里写图片描述

Logo

更多推荐