如果没有安装在 bash 脚本中,我正在尝试安装 composer 包。但是现在不行了,no_package函数总是通过#!/bin/bash -eno_package() { composer show | grep matchish/laravel-scout-elasticsearch | test}if [ no_package ]; then composer require "matchish/laravel-scout-elasticsearch"else echo 'Package installed'fiUPD:这是解决方案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
2 回答
杨魅力
TA贡献1811条经验 获得超6个赞
这里有两个误解:
你不能把东西通过管道传送到
test
.if some_command
是命令成功时做某事的方式。[ no_package ]
实际上并不运行命令,它只是检查字符串“no_package”是否不为空,因此总是成功。
除此之外,您可能希望使用该--quiet
标志grep
来避免打印包名称。
拉风的咖菲猫
TA贡献1995条经验 获得超2个赞
我测试了该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
- 2 回答
- 0 关注
- 155 浏览
添加回答
举报
0/150
提交
取消