【发布时间】:2019-07-03 14:12:38
【问题描述】:
我对 shell 脚本非常陌生。我想检查以下内容:
- 用户是否为
su。 - 如果
su则systemctl命令存在与否 - 如果已安装则 java 是否已安装
- 如果已安装,则版本是否为 1.8 或更高版本
- 如果更多,那是不是Oracle Java
- 如果是 Oracle Java 则运行一个 jar
我做了以下事情:
#!/bin/bash
if ! [ $(id -u) = 0 ]; then
echo "User not logged in as Root!"
exit 1
fi
if command -v systemctl; then
echo Found systemctl
else
sudo apt-get install systemd
fi
if type java | grep -q 'java' ; then
echo Found java executable in PATH
_java=java
elif [[ -n "$JAVA_HOME" ]] && [[ -x "$JAVA_HOME/bin/java" ]]; then
echo Found java executable in JAVA_HOME
_java="$JAVA_HOME/bin/java"
else
echo "Java is not installed. Please install JAVA 1.8 or upper version"
exit 1
fi
if [ ! -z "$_java" ]; then
version=$("$_java" -version 2>&1 | awk -F '"' '/version/ {print $2}')
echo version "$version"
if [ "$version" > "1.8" ]; then
echo Java version is more than 1.8
if [[ $("$_java" -version 2>&1) != *"Java(TM)"* ]]; then #Problem is here
# if [ $("$_java" -version 2>&1) | grep -q 'Java(TM)' ]; then
echo "Oracle JRE is installed"
java -jar myJar-0.0.1-SNAPSHOT.jar
else
echo "Oracle JRE is not installed" ;
fi
else
echo Java version is less than 1.8
echo "Please install JAVA 1.8 or upper version"
exit 1
fi
else
exit 1
fi
当我执行它时,以下错误来自if [[ $("$_java" -version 2>&1) != *"Java(TM)"* ]]; then 行
installNew.sh: 34: installNew.sh: [[: not found
谁能帮忙?
【问题讨论】:
-
不要像
sh installNew.sh那样调用你的脚本,你必须专门使用bash。 -
基于上面的评论,如果你先跳到一个新的
bashshell 然后运行脚本会发生什么? -
与你的主要问题无关,但是:1)你检查了 uid=0,所以你不需要
sudo2)systemd 是系统的一个非常核心的部分,所以@987654330 @真的不是你应该通过安装java来做的事情。 -
su到什么?您可以使用su更改为系统中的任何用户。是否要检查超级用户权限?