読者です 読者をやめる 読者になる 読者になる

あるバージョン以上の Zsh か調べる

@elim % autoload -Uz is-at-least % is-at-least 3.1.6-15 && setopt NO_GLOBAL_RCS みたいな感じでできるよ #zsh

http://twitter.com/mollifier/status/11198525405

ありがとう @mollifier !!

というわけで以下は obsoleっっte.

function zsh-greater-version-p() {
  if [[ "$#" -eq 0 ]]; then
    echo Usage: zsh-grater-version-p MINIMUM_VERSION
    return 1
  fi

  local tmp zsh_version minimum_version
  tmp="$(echo $ZSH_VERSION|sed -e 's/\./ /g')"; zsh_version=(${(z)tmp})
  tmp="$(echo ${1}|sed -e 's/\./ /g')";  minimum_version=(${(z)tmp})

  if [[ ${#zsh_version} -eq ${#minimum_version} ]]; then
    local length
    length=${#zsh_version}

    for i in {1..${length}}; do
      if [[ ${${zsh_version}[$i]} -gt ${${minimum_version}[$i]} ]]; then
        return 0
      elif [[ ${${zsh_version}[$i]} -lt ${${minimum_version}[$i]} ]]; then
        return 1
      fi
    done
  fi
}
$ echo $ZSH_VERSION
4.3.10
$ if zsh-greater-version-p 4.3.9; then echo true;else echo false;fi
true
$ if zsh-greater-version-p 4.3.10; then echo true;else echo false;fi
true
$ if zsh-greater-version-p 4.3.11; then echo true;else echo false;fi
false

これも力技。