bash - Bash 在 || 之后执行多个命令 如果非 0
问题描述
我的脚本中有一行代码以确保存在 conda 环境,如果不存在,则安装环境并下载环境中程序的数据库。我有这个代码:
test -d ~/miniconda3/envs/antismash_v5 || echo "Conda environment does not exist. Initialising conda environment......" && conda env create -f antismash.yml && conda activate antismash_v5 && download-antismash-databases
但这只是执行第一个之后的所有内容,&&
无论test
函数之前是否返回非零||
。我怎样才能让它按预期工作?
解决方案
test
您可以通过使用 bang来否定!
并将其余命令包含在if
语句中,这样您就不需要{ }
if ! test -d ~/miniconda3/envs/antismash_v5; then
command_here &&
another_command_here &&
some_more_commands_here &&
do_more_commands here &&
.....
fi
看help test
help test | grep '^[[:blank:]]*!'
输出
! EXPR True if expr is false.
推荐阅读
- reactjs - React Router Dom 5.1.2 — 选项卡支持
- amazon-web-services - 通过 Lambda 函数获取数据并将其保存为 AWS 存储中的 JSON
- google-apps-script - 如何在 Google Apps 脚本中创建一个循环?
- python - 后缀:从python脚本读取传入邮件时权限被拒绝错误
- typescript - 具有可变属性名称的 emberjs glimmer 对象 set()
- node.js - 我网站中的 xss-clean 中间件在一个页面上工作,但在另一个页面上不工作
- tfs - Azure devop 服务器用户收不到电子邮件通知
- tcp - 通过 TCP 流式传输 RTSP
- swiftui - 有没有办法将按钮放在 SwiftUI 单元格视图中?
- scalafx - 从 javafx ObjectProperty 转换为 scalafx ObjectProperty 的正确方法是什么