在我开始之前,我知道这可能是最好在 git-hub 上打开的问题,但是;
a. 这只是小事
b. 反斜杠的功能已在之前已关闭的问题中概述,但空格尚未概述(请参阅此处)
c. 作为新用户,我无法在 git-hub 上打开问题
d. 它可以通过谷歌索引帮助新手。
请随意代表我创建一个 git-hub 问题。
考虑以下代码;
# Our fish :)
set fishies \
">('>" \
"><=*>" \
">-<==*>" \
">==(--v-*);->" \
"><>" \
"><(((º>" \
">-<===*>" \
">(̠̄:̠̄ >" \
">><((( ◉ >"
# Usage ; set fish (getfish) && echo $fish
function getfish
# Set our fish to a random item from the "fishies" list
set -l fish $fishies[(random 1 (count $fishies))]
# Return our fish to the STDOUT
echo $fish
end
这很好。但是,如果我们在任何反斜杠(“\__”(用下划线 (_) 表示))后面添加空格,则其下方的行将不会传递给命令set fishes
。
这是一个正确的行为吗?是否有关于反斜杠如何工作的文档,因为我只是在修修补补时偶然发现这一点?
重申一下,有人能向我解释为什么会出现这种行为吗?
关于反斜杠,我发现最多的(我认为)是上述 git-hub 问题中的以下代码(但我不完全理解它);
It (the usage of a backslash to form a new-line) has been special cased in tokenizer.cpp:539 :
if ((*(tok->buff) == L'\\') &&(*(tok->buff+1) == L'\n'))
{
tok->last_pos = tok->buff - tok->orig_buff;
tok->buff+=2;
tok->last_type = TOK_END;
return;
}
如果这篇文章写得幼稚/不好,我深表歉意,因为我是一名新用户,并且不活跃。我想发表一下我的看法,希望能帮助其他遇到同样问题的新手,这是一个很棒的小功能,也是一个很棒的小工具,如果不记录这种行为,那将是一种遗憾,因为它在编写长命令/字符串时非常有用。