【问题标题】:Script test to see if a tool is already loaded?脚本测试以查看是否已加载工具?
【发布时间】:2017-11-17 03:40:22
【问题描述】:

我正在学习 docker,我正在尝试进行 shell 测试以查看是否已加载关键工具。我正在对将 docker 部署到不同风格的服务器进行一些测试。这是脚本,保存为 dockerScript.sh

#!/bin/bash
## run "$  chmod +x dockerScript.sh" to make the script executable.
## then run "./dockerScript.sh" to activate the script 
touch docker-compose.yml
cat > docker-compose.yml <<EOL
version: "2"
services:
    (etc...)
EOL
if[docker-compose is not already loaded] <--- what goes here?
then
    curl -L https://github.com/docker/compose/releases/download/1.14.0-rc2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
    chmod +x /usr/local/bin/docker-compose
fi

docker-compose up -d

在这种情况下,我想验证 docker-compose 是否已加载。我不太确定该怎么做。

我知道如果我 $ docker-compose -v 我会收到类似

的回复

docker-compose version 1.14.0-rc2, build 24dae73 成功

还有一个

-bash: docker-compose: command not found

bash: docker-compose: command not found

如果工具未加载,则作为响应,具体取决于我将使用的 linux 版本。

有没有办法测试操作系统是否存在/安装 docker-compose 工具并完成我的 shell 脚本?

【问题讨论】:

  • if docker-compose -v &gt;/dev/null;then 不起作用吗?
  • 不。这是对建议使用which 测试的其他人的回复。
  • pgrep docker-compose? (我理解“加载”对吗?)
  • @123 运气不好。 if (/dev/null) 测试失败,如所写。当我做$ which docker-compose 时,看到/usr/local/bin/docker-compose 的响应,但不清楚这是否适用于所有安装。
  • @hidefromkgb 这看起来不错,但似乎失败了。 # pgrep docker-compose -c --> 0# docker-compose -v --> docker-compose version 1.14.0-rc2, build 24dae73

标签: linux bash shell docker centos


【解决方案1】:

你可以使用hash命令

hash docker-compose 2>/dev/null || { echo >&2 "I require docker-compose but it's not installed."; }

hash 是 bash 内置命令。哈希表是 bash 的一项功能,通过将结果缓存在内存中,它可以避免每次键入命令时都必须搜索 $PATH

您可以使用hash 命令,不用担心您的系统上是否安装了hash 实用程序。如果你有bash,那么你就有hash

hash some_cmd 2&gt;/dev/null 表示将错误输出从 stderr 重定向到 /dev/null

【讨论】:

  • 我迷路了。你能解释一下这里到底发生了什么吗? Hash 似乎是一种“记住”以前的 shell 命令的工具。我正在尝试一大堆预先安装好的操作系统。如果工具是在原始操作系统版本中安装的,hash 会有记录吗?还是哈希只记得我输入的内容? 2&gt; 符号是什么?等等......这可能是正确的答案,但如果没有解释,它在未来对其他人来说几乎没有持久力和价值。
  • 对不起,我会尽力解释我的答案
  • 非常感谢...这似乎对我有用。是的,我还在学习 shell 脚本的来龙去脉。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-10
  • 2023-01-15
相关资源
最近更新 更多