将bash脚本转换为fish

mon*_*auk 4 bash fish

我正在尝试将以下 bash 脚本添加到fish,但在获取fish 中的语法时遇到了问题。这是原始脚本:

export MINION_INSTALL=$HOME/minion
export NOTES_HOME=$HOME/Notes
export INBOX=$NOTES_HOME/inbox

if [ -d "$MINION_INSTALL" ] ; then
    export PATH="$MINION_INSTALL:$PATH"
fi

source $MINION_INSTALL/aliases_for_minion
Run Code Online (Sandbox Code Playgroud)

这是aliases_for_minion文件:

alias mn="minion"
alias icannotfind="minion --open --archive --full $@"
alias newnote="minion --new-note $@"
alias open="minion --open $@"
alias remind="minion --new-note --quick $@"
alias summary="minion --count inbox; minion --list --show-tags=False today; \
    minion --count next; minion --count soon; minion --count someday" 
Run Code Online (Sandbox Code Playgroud)

如果我在启动 bash 后运行 fish,minion 命令可以正常工作。

任何帮助将不胜感激!

rid*_*ish 7

下面是一些例子,说明这在鱼中会是什么样子:

set -x INBOX $NOTES_HOME/inbox
if [ -d "$MINION_INSTALL" ]
    set -x PATH $MINION_INSTALL $PATH
end
Run Code Online (Sandbox Code Playgroud)

请注意没有引号,这在设置 PATH 的行中尤为重要。引用它会将列表中的所有路径折叠为一个条目,这不是您想要的。

除了末尾的 $@ 之外,别名在fish 中是有效的。fish 有参数 as $argv, not $@,但更重要的是,任何参数都隐式附加到 alias 命令。所以你可以写:

alias newnote="minion --new-note"
Run Code Online (Sandbox Code Playgroud)

然后,例如,newnote foo bar将成为minion --new-note foo bar

如果您愿意,可以使用 验证它functions newnote,这将显示别名生成的函数。

希望有帮助!