检测 Mac 上是否安装了 coreutils

3

不使用 brew,我如何检测在运行我的bash脚本的Mac上是否安装了coreutils。

这是我的脚本:

#!/usr/bin/env bash

check_bash_version () {
  echo "checking which bash version is installed...."
  sleep 3
  echo "Bash versioncheck completed"
  sleep 1
  if [[ "${BASH_VERSINFO[0]}" -lt 4 ]]; then
    echo "You need to be using Bash version =< 4. Please upgrade"
    exit 1
  fi
}

check_coreutils () {
  echo "checking if coreutils is installed...."
  sleep 3
  # what goes here
}

main() {
  # Main function.

  # check if MacOS
  if [[ "$(uname)" == "Darwin" ]]; then
    check_bash_version
    check_coreutils
  fi
}

  1. 从coreutils中选择一个工具。
  2. 输出该工具的--version
  3. 检查输出中是否包含字符串GNU。
- undefined
谢谢@KamilCuk。如果你把你的评论变成答案,我就可以接受了。 - undefined
1
无关。您的错误消息应为“您需要使用bash版本>= 4”。 - undefined
1个回答

0
通常通过使用工具的输出--version,并检查其中是否包含字符串GNU来确定GNU工具的存在。

只有在你实际上用GNU的coreutils替换掉mac旧版的BSD版本时,这才有效。如果你通过homebrew安装GNU coreutils,它们不会替换掉旧版,而是被安装在brew的文件夹中,并且以g为前缀的二进制名称来调用,例如gcomm而不是comm。所以如果comm --version返回的不是GNU字符串,你也应该检查gcomm --version - undefined
如果您希望自动使用已安装的版本而不是默认版本,可以执行以下操作: echo 'export PATH=\"/usr/local/opt/coreutils/libexec/gnubin:\$PATH\"' >> ~/.bash_profile - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接