SHELL 判斷乙個命令是否存在

2021-09-27 05:03:50 字數 876 閱讀 9597

command -v  db2 |wc -l

執行命令返回結果為0,則表示可以呼叫db2命令

command -v  db2 |wc -l

執行命令返回結果為1,則表示不可以呼叫db2命令,需要配置使用者環境變數

首先要說明的是,不要使用which來進行判斷,理由如下:

1、which非shell的內建命令,用起來比內建命令的開銷大,並且非內建命令會依賴平台的實現,不同平台的實現可能不同。

# type type

type is a shell builtin

# type command

command is a shell builtin

# type which

which is hashed (/usr/bin/which)

2、很多系統的which並不設定退出時的返回值,即使要查詢的命令不存在,which也返回0

# which ls

/usr/bin/ls

# echo $?

0# which aaa

no aaa in /usr/bin /bin /usr/sbin /sbin /usr/local/bin /usr/local/bin /usr/local/sbin /usr/ccs/bin /usr/openwin/bin /usr/dt/bin

# echo $?

03、許多系統的which實現,都偷偷摸摸幹了一些「不足為外人道也」的事情

所以,不要用which,可以使用下面的方法:

$ command -v foo >/dev/null 2>&1 ||

$ type foo >/dev/null 2>&1 ||

$ hash foo 2>/dev/null ||

shell 判斷乙個檔案或者目錄是否存在

bin bash program 判斷乙個檔案或者目錄是否存在 history 01 04 2011 saint first releas path bin sbin usr bin usr sbin usr local bin usr local sbin bin export path read...

判斷乙個類是否存在

我們在開發的過程中難免會用到低版本中沒有的類,如果我們想讓我們的應用盡可能的相容多個版本,我們需要考慮 如果我們使用的類在低版本中沒有怎麼辦呢。class pkclass nsclassfromstring pkaddpassesviewcontroller if pkclass else nsst...

判斷乙個類是否存在

我們在開發的過程中難免會用到低版本中沒有的類,如果我們想讓我們的應用盡可能的相容多個版本,我們需要考慮 如果我們使用的類在低版本中沒有怎麼辦呢。class pkclass nsclassfromstring pkaddpassesviewcontroller if pkclass else nsst...