【问题标题】:Shell script : install missing software if command not foundShell 脚本:如果找不到命令,则安装缺少的软件
【发布时间】:2020-06-12 19:05:20
【问题描述】:

为了提供一些上下文,我正在运行 docker 的 Amazon ec2 linux 环境中工作,并且在 docker-container 中托管 Jenkins。在我的 Jenkins 管道中,我能够编写 shell 脚本,但我是脚本新手,尽管我努力寻找解决方案,但我遇到了困难。

我试图在我的脚本中做的只是验证我的软件是否已安装(cf-cli 和 angular-cli),如果没有,则安装它们。 在使用实际安装命令之前我一直在玩,但这是我的方法,希望这是一些常见的行业惯例,但我不确定:

if ['cf version' not 由于找不到命令而失败]
然后 因为已经安装,所以什么也不做
其他安装cf

以下是我当前的脚本,它在我的第一个 if 语句中一直退出执行,因为找不到 cf 命令。这正是我试图用于 if 语句流的内容,但我不确定如何。我注意到的另一件事是,在这个容器中,我 DO 已经安装了 angular,并且我确实从“ng version”命令中获得了版本输出,但脚本会 always 回显它给我的系统增加了角度,就好像第二个 if 语句是错误的一样。如果有人可以帮助指导我,我很感激你。

sh '''
    echo 'Verifying cf-cli installation'
    if [ "cf version" -ne 127 ]
    then
        echo 'cf-cli must be installed. Do nothing'
    else
        echo 'Adding the Cloud Foundry to your system...'
    fi

    ANGULAR_VERSION=$(ng version 2>&1)
    if [ $ANGULAR_VERSION ]
    then
        echo 'angular must be installed. do nothing'
    else
        echo 'Adding angular to your system...'
    fi
    '''

【问题讨论】:

    标签: bash shell jenkins


    【解决方案1】:

    您可以使用scripts-common 来满足您的需求。

    要检查是否安装了某些东西,您只需要像这样检查它:

    checkBin cf-cli || errorMessage "This tool requires cf-cli. Install it please, and then run this tool again."
    

    如果你想自动管理安装,你可以这样做:

    if ! checkBin cf-cli; then
      # Instructions to install it
    fi
    

    【讨论】:

      猜你喜欢
      • 2017-05-26
      • 2018-04-29
      • 2016-10-07
      • 2021-10-13
      • 2023-01-26
      • 1970-01-01
      • 2014-12-23
      • 1970-01-01
      • 2017-08-15
      相关资源
      最近更新 更多