如何在 Fish shell 中進行字串操作

如何在 Fish shell 中進行字串操作

如何在 Fish shell 中進行 bash 風格的字串操作?

具體來說,在 bash

read branch < ".git/HEAD"
branch=${branch#ref: refs/heads/}

將把分支名稱放入$branch變數中。

我怎樣才能在魚殼中做同樣的事情?

我瀏覽了魚的文檔,但沒有找到任何東西。

答案1

Fish shell 現在有string內建指令。

在您的情況下使用string而不是sed

set branch (string replace 'ref: refs/heads/' '' <.git/HEAD)

它可以對給定的參數或標準輸入進行操作。

還有很多事情string可以做。來自字串命令文檔:

Synopsis

string length [(-q | --quiet)] [STRING...]
string sub [(-s | --start) START] [(-l | --length) LENGTH] [(-q | --quiet)]
           [STRING...]
string split [(-m | --max) MAX] [(-r | --right)] [(-q | --quiet)] SEP
             [STRING...]
string join [(-q | --quiet)] SEP [STRING...]
string trim [(-l | --left)] [(-r | --right)] [(-c | --chars CHARS)]
            [(-q | --quiet)] [STRING...]
string escape [(-n | --no-quoted)] [STRING...]
string match [(-a | --all)] [(-i | --ignore-case)] [(-r | --regex)]
             [(-n | --index)] [(-q | --quiet)] [(-v | --invert)] PATTERN [STRING...]
string replace [(-a | --all)] [(-i | --ignore-case)] [(-r | --regex)]
               [(-q | --quiet)] PATTERN REPLACEMENT [STRING...]

答案2

Fish 完全是極簡主義:如果有一個通用實用程式可以輕鬆完成這項工作,那麼它不會在 Fish 中。所以,正如你所說,使用 sed:

set branch (sed 's#^ref: refs/heads/##' .git/HEAD)

相關內容