【问题标题】: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结尾,不需要then或do。
所以这是最直接钓鱼的港口:
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。