【问题标题】:Trouble writing fish if statement编写fish if语句时遇到问题
【发布时间】:2016-04-08 06:07:16
【问题描述】:

所以我有以下 if 语句(最初来自我的 .zshrc):

if [ -n "${NVIM_LISTEN_ADDRESS+x}" ]; then
  alias h='nvr -o'
  alias v='nvr -O'
  alias t='nvr --remote-tab'
fi

现在我正在尝试将其移植到我的 config.fish,我知道这与 if 上的 [ 有关,但我不太明白语法。

【问题讨论】:

    标签: shell if-statement syntax zsh fish


    【解决方案1】:

    [ 没问题。 fish中不同的两部分是+x扩展修饰符和循环语法。

    在 zsh 中,如果设置了 $NVIM_LISTEN_ADDRESS"${NVIM_LISTEN_ADDRESS+x}" 的计算结果为 x,否则为空;然后比较它是否为空。这似乎是一种仅检查变量是否已设置的迂回方式。

    关于循环,鱼块总是以end结尾,不需要thendo

    所以这是最直接钓鱼的港口:

    if [ -n "$NVIM_LISTEN_ADDRESS" ]
        alias h='nvr -o'
        alias v='nvr -O'
        alias t='nvr --remote-tab'
    end
    

    这是更惯用的:

    if set -q NVIM_LISTEN_ADDRESS
        abbr h 'nvr -o'
        abbr v 'nvr -O'
        abbr t 'nvr --remote-tab'
    end
    

    使用原地展开的鱼abbreviation feature

    【讨论】:

    • 感谢您提供如此广泛的回答。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-13
    • 1970-01-01
    相关资源
    最近更新 更多