GNU/Linux >> Linux の 問題 >  >> Linux

$ pathにファイルが存在するかどうかをFishShellでテストしますか?

figletの存在をフィッシュシェルスクリプトでテストしようとしています バイナリ。 LinuxとOSXを使用しているため、ファイルが同じ場所にあることに依存できず、動的に解決する必要があります。私は$(which)でこれを行うことに慣れています 動作するbashで。

これは適切に機能しませんが、魚の場合。なぜですか?

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

承認された回答:

typeを使用する fish ボーンのようなシェルのように:

if type -q figlet
  hostname | figlet
end

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

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

Linux
  1. ポータブルシェルプログラミングのリソース?

  2. 最も古いファイルを移動するためのシェルスクリプト?

  3. シェル スクリプトの単体テスト

  1. フィッシュ シェルでエイリアスを定義する

  2. .sh ファイルがマルウェアになる可能性はありますか?

  3. シェルスクリプトは、ファイルが変更されてアクションを実行するのを待つことができますか?

  1. シェルドットファイルでできること

  2. セキュリティテスト用の人気のあるLinuxディストリビューション

  3. ファイル記述子とシェルスクリプト?