如何检查安装在 bash 脚本中的 composer 包

如果没有安装在 bash 脚本中,我正在尝试安装 composer 包。但是现在不行了,no_package函数总是通过


#!/bin/bash -e


no_package() {

    composer show | grep matchish/laravel-scout-elasticsearch | test

}


if [ no_package ]; then

  composer require "matchish/laravel-scout-elasticsearch"

else

  echo 'Package installed'

fi

UPD:这是解决方案


package_installed() {

    composer show | grep matchish/laravel-scout-elasticsearch --quiet

}

if package_installed; then

  echo 'Package installed'

else

  composer require "matchish/laravel-scout-elasticsearch"

fi


慕侠2389804
浏览 156回答 2
2回答

杨魅力

这里有两个误解:你不能把东西通过管道传送到test.if some_command是命令成功时做某事的方式。[ no_package ]实际上并不运行命令,它只是检查字符串“no_package”是否不为空,因此总是成功。除此之外,您可能希望使用该--quiet标志grep来避免打印包名称。

拉风的咖菲猫

我测试了该test命令,发现test无论我输入什么命令,该命令都返回相同的结果。所以这样跑比较好package_exist() {    composer show | grep matchish/laravel-scout-elasticsearch >/dev/null}if package_exist; then    echo 'installed'else    echo 'uninstalled'    echo 'installing matchish/laravel-scout-elasticsearch'    composer require "matchish/laravel-scout-elasticsearch"fi
打开App,查看更多内容
随时随地看视频慕课网APP