2016-07-17 3 views
2

bashでは、$0というスクリプトのパスを取得できます。公式文書に従って、$_によって魚のスクリプトでそれを行うことができるようです。魚スクリプト自体のパスを取得する方法

これまでのような魚のスクリプトを作成して実行しようとすると、改行だけが表示されます。

#!/usr/bin/fish 
echo $_ 

反応性の魚で、echo $_はliterately echoを与えるとは<command>の引数としてliterately "コマンド" を渡しますが。

私は$_の奇妙な振る舞いとそれが何のために使われているのか混乱しています。

+0

「$ _」に現在のファイル名が含まれていると思うようになる文書のセクションを教えてください。現在のドキュメントで言及されている唯一の場所は「プログラマブルタイトル」セクションであり、明示的には「フォアグラウンドに置く仕事の名前」です。 – faho

+0

第1回、 'Programmable title'セクションが正確に何を言いたいのかを明確にするために、より多くの例が必要だと思います。関数の振る舞いは魚のスクリプトに似ているので、2番目。例えば、両方とも '$ argv [$ i] 'の方法でパラメータを受け取り、パラメータを受け取ります。 '$ _'がその関数の名前を与えることができるので、' $ _'が '$ _'がトップレベルにあるときに' $ _'がスクリプトの名前を与えるかもしれないと考えるように私に任せます。第3に、スクリプト自体を表現するためにbashを使用するので、それは魚がそれと同様のマクロを使用すると考えるように私に任せます。 – TorosFanny

答えて

5

$_はちょっと混乱しますが、「魚のスクリプトへのパス」ではなく、現在のフォアグラウンドの仕事の名前です。

スクリプトへのパスを取得するには、status --current-filename(対話形式で起動する場合は「標準入力」となります)を使用します。

+2

実際には大文字になります。「標準入力」。それが文章ではないので、大文字小文字が奇妙なので、それをすべて小文字に変更するには遅すぎるかどうか分かりません。 –

関連する問題