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

What to do if fish can't use variable as value in for grammar

例如

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,所以它现在是四个独立的元素?它还在循环中使用实际的循环变量。