所以我有以下if语句(最初来自我的.zshrc):
ALTER FUNCTION [dbo].[TfSplitTemplateVariable]
(
@String NVARCHAR(MAX),
@Delimiter NVARCHAR(2)
)
RETURNS @result TABLE (Id INT IDENTITY PRIMARY KEY, Data NVARCHAR (MAX))
AS
BEGIN
DECLARE @start INT, @end INT
SET @start = 1
WHILE CHARINDEX(@Delimiter, @String, @start) > 0
BEGIN
SET @start = CHARINDEX(@Delimiter, @String, @start) + LEN(@Delimiter)
SET @end = CHARINDEX(@Delimiter, @String, @start)
IF @end > @start
BEGIN
INSERT @result(Data) VALUES(SUBSTRING(@String, @start, @end - @start))
END
ELSE
BEGIN
BREAK
END
SET @start = @end + LEN(@Delimiter)
END
RETURN
END
GO
现在我正在尝试将其移植到我的if [ -n "${NVIM_LISTEN_ADDRESS+x}" ]; then
alias h='nvr -o'
alias v='nvr -O'
alias t='nvr --remote-tab'
fi
,我知道它与if上的config.fish
有关,但我无法弄清楚语法。
答案 0 :(得分:2)
[
没问题。 fish中两个不同的部分是+ x扩展修饰符和循环语法。
在zsh中,"${NVIM_LISTEN_ADDRESS+x}"
如果设置了x
,则评估为$NVIM_LISTEN_ADDRESS
,否则为空;然后将其进行比较以查看它是否为空。这似乎是一种迂回的方式来检查变量是否已设置。
关于循环,鱼块始终以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。