运行部分bash脚本

时间:2018-01-04 18:16:45

标签: bash automation

所以我希望有一个自动Bash脚本来检查java,如果它不存在或超级旧版本(低于7),它会安装它。

我有一些有用的东西,但它会运行bash脚本的所有部分,产生奇怪的结果。

代码:

#!/bin/bash

# This file will call versions and install if necessary

version_call_java = $(java -version)
java_call_len = ${#version_call_java}
if [[ $version_call_java == *"not found"* ]]; then
  echo "It's not there!"
  sudo apt-get install java
  echo "Installing Java"
elif [[ $version_call_java == *"version*" ]]
  echo "Its there!"
fi
date

代码的结果:

Results

第5,6和13行不应该运行。

我的逻辑也正确吗?如果机器没有java,我会查找“未找到”字样。也许“识别”更好但不确定是否存在一个布尔值,如果软件程序存在于机器上是否存在。

1 个答案:

答案 0 :(得分:1)

以下是您的脚本的工作版本:

#!/bin/bash

# This file will call versions and install if necessary

version_call_java=$(java -version)
java_call_len=${#version_call_java}
if [[ $version_call_java == *"not found"* ]]; then
  echo "It's not there!"
  sudo apt-get install java
  echo "Installing Java"
elif [[ $version_call_java == *"version"* ]]; then
  echo "Its there!"
fi
date

有3个问题。

1)version_call_java = $(java -version)<< =在为变量赋值时不需要空格。

2)你需要在elseif条件之后添加。

elif [[ $version_call_java == *"version"* ]]; then

3)*"version*"应为*"version"*