我需要从 bash 脚本中检查是否安装了某些 Ruby gem。
我以为我可以做类似的事情
if ! gem list <name>; then do_stuff; fi
Run Code Online (Sandbox Code Playgroud)
但是在命令行上使用测试echo $?表明gem list <name>无论是否实际找到名称都返回 0。
这是否意味着我必须使用 grep 来过滤 gem list 的输出,或者有没有更好的方法可以检查是否安装了 gem?
Sve*_*ven 26
gem list <name> -itrue如果安装了 gem,则返回字符串,false否则返回。此外,返回代码是您所期望的。
有关更多信息,请参阅gem help list。
编辑:@Riateche正确地观察到,如果您搜索作为其他方式安装的 gem 的子字符串的 gem 名称,这可能会产生误报。为避免这种情况,请使用正则表达式语法:
gem list '^<name>$' -i
Run Code Online (Sandbox Code Playgroud)
(例如:)gem list '^mini$' -i。
如果gem spec未安装命名 gem ,则该命令似乎会失败并显示错误。所以:
if ! gem spec <name> > /dev/null 2>&1; then
echo "Gem <name> is not installed!"
fi
Run Code Online (Sandbox Code Playgroud)
我不知道这是否是解决这个问题的规范方法,但它有效。
| 归档时间: |
|
| 查看次数: |
14400 次 |
| 最近记录: |