奇怪的是,其他人抱怨fish总是把变量拆分成列表。但对我来说,它只是将多行变量作为一个字符串。
我在写鹦鹉螺的剧本。鹦鹉螺应该设置一个名为$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS
的变量,所选文件用换行符分隔。
我试着把它们列成一个列表,然后用鱼在上面循环。但它们只是作为一个单一的元素。
set -l files $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS
for i in (seq (count $files))
echo (count $files) >> koko
end
文件koko现在显示数字1。
2条答案
按热度按时间kwvwclae1#
Fish不会在变量被设置后拆分变量(这被称为“单词拆分”)。
但是,它所做的是在换行符上分割命令替换,所以
会成功的
或者,如果您希望清楚地表明您这样做是为了拆分它,您可以像这样使用
string split
:这将最终相同(因为目前
string split
只添加换行符),但看起来更清晰一点。(“--”是选项分隔符,因此$files中的任何内容都不会被解释为选项)后者要求鱼>= 2.3.0。
ogq8wdun2#
如果你想用空格分割变量,那么命令是:
别忘了
--no-empty
。现在,您还可以通过以下方式获取单个值,例如: