Vim
executable()
関数を使う.
~/.vimrc
" コマンドが存在すれば
if executable('git')
NeoBundle 'mattn/gist-vim'
endif
Emacs
~/.emacs.d/init.el
(when (executable-find "terraform") ; コマンドが存在すれば
(el-get-bundle terraform-mode)
)
sh
hash
やtype
, which
, command -v
などを使う.
ワンライナー
type htop > /dev/null 2>&1 && echo Success!
# コマンドが存在すれば
type htop > /dev/null 2>&1 || echo Error!
# コマンドが存在しなければ
複数行
type htop > /dev/null 2>&1
if [ $? -eq 0 ] ; then # コマンドが存在すれば
echo Success!
alias top=htop
else # コマンドが存在しなければ
echo Error! >&2
exit 1
fi
簡潔に書くと:
if type htop > /dev/null 2>&1; then # コマンドが存在すれば
echo Success!
alias top=htop
else # コマンドが存在しなければ
echo Error! >&2
exit 1
fi
PowerShell
ワンライナー
&&
や||
に対応するものはたぶんない ?
複数行
Get-Command
(gcm
) コマンドレットを使う.
gcm perldoc -ea SilentlyContinue | Out-Null
if ($? -eq $true) { # コマンドが存在すれば
Write-Output 'Success!'
perldoc perldoc
} else { # コマンドが存在しなければ
Write-Error 'Error!'
exit 1
}
簡潔に書くと:
if (gcm perldoc -ea SilentlyContinue) { # コマンドが存在すれば
Write-Output 'Success!'
perldoc perldoc
} else { # コマンドが存在しなければ
Write-Error 'Error!'
exit 1
}
コマンドプロンプト
where
コマンドを使う.
ワンライナー
where /q perldoc && echo Success!
rem コマンドが存在すれば
where /q perldoc || echo Error!
rem コマンドが存在しなければ
複数行
where /q perldoc
if %errorlevel% == 0 ( :: コマンドが存在すれば
echo Success!
perldoc perldoc
) else ( :: コマンドが存在しなければ
echo Error! >&2
exit /b 1
)