Fish Shellは$ PATHにファイルがあるかどうかをテストします。

Fish Shellは$ PATHにファイルがあるかどうかをテストします。

Fishシェルスクリプトにバイナリファイルがあるかどうかをテストしようとしていますfiglet。私はLinuxとOS Xを使用しているので、ファイルが同じ場所にあるとは思えず、動的に解決する必要があります。私は$(which)bashでこれを行うのに慣れていて動作します。

しかし、魚の場合、これは正しく機能しません。なぜ?

function print_hostname --description 'print hostname'
  if test -x (which figlet)
    hostname | figlet
  end
end

ベストアンサー1

typefishBourneなどのシェルで使用されます。

if type -q figlet
  hostname | figlet
end

または実行可能ファイルに制限します$PATH(関数、組み込み関数を無視)。

if command -s figlet > /dev/null
  hostname | figlet
end

また、見ることができます「which」を使わないのはなぜですか?それでは何を使うべきですか?

おすすめ記事