Fishシェルスクリプトにバイナリファイルがあるかどうかをテストしようとしていますfiglet
。私はLinuxとOS Xを使用しているので、ファイルが同じ場所にあるとは思えず、動的に解決する必要があります。私は$(which)
bashでこれを行うのに慣れていて動作します。
しかし、魚の場合、これは正しく機能しません。なぜ?
function print_hostname --description 'print hostname'
if test -x (which figlet)
hostname | figlet
end
end
答え1
type
fish
Bourneなどのシェルで使用されます。
if type -q figlet
hostname | figlet
end
または実行可能ファイルに制限します$PATH
(関数、組み込み関数を無視)。
if command -s figlet > /dev/null
hostname | figlet
end
また、見ることができます「which」を使わないのはなぜですか?それでは何を使うべきですか?