Loading

Shell下判断一个命令是否存

  • which非SHELL的内置命令,用起来比内置命令的开销大,并且非内置命令会依赖平台的实现,不同平台的实现可能不同。
  • 很多系统的which并不设置退出时的返回值,即使要查找的命令不存在,which也返回0

较为合适的判断方式

command -v foo >/dev/null 2>&1 || { echo >&2 "I require foo but it's not installed.  Aborting."; exit 1; }
type foo >/dev/null 2>&1 || { echo >&2 "I require foo but it's not installed.  Aborting."; exit 1; }
hash foo 2>/dev/null || { echo >&2 "I require foo but it's not installed.  Aborting."; exit 1; }
if ! [ -x "$(command -v git)" ]; then
  echo 'Error: git is not installed.' >&2
  exit 1
fi

 

posted @ 2023-04-24 18:55  Outsrkem  阅读(35)  评论(0)    收藏  举报