如果fish不能使用变量作为语法中的值怎么办

问题描述

例如

set -g hi "lol lol 123 321"

For I in $hi
    echo $hi
end

直接输出$hi

解决方法

这里有很多问题:

  1. 是为了,不是为了。
  2. $hi 是一个只有一个元素的变量,所以在这里运行 for 循环没有多大意义。大概你想把它设置成 set -g hi lol lol 123 321 没有引号
  3. 在(假定的)for 循环中,您打印的是 $hi,而不是循环变量 - 这应该是 echo $I。

让我们在这里用它的值替换 $hi:

for I in "lol lol 123 321"
    echo "lol lol 123 321"
end

看看它是如何打印 lol lol 123 321 一次的? Fish 不进行分词,因此如果您将 $hi 设置为 "lol lol 123 321",那么当您使用不带引号的变量时,将使用该值。就好像我们刚刚在这里完成一样。

fish 不可能“将此变量用作语法中的值”。它使用你告诉它的变量。

我认为你的意思是

set -g hi lol lol 123 321

for I in $hi
   echo $I
end

将打印

lol
lol
123
321

看看这如何设置 $hi 没有引号,所以它现在是四个单独的元素?它还使用循环中的实际循环变量。