我正在将一个脚本从 Z shell 翻译为 Fish,而我有这一部分我不知道如何翻译:
for (( i=0; i < $COLUMNS; i++ )); do
printf $1
done
for
我可以在 Fish 中找到的唯一循环文档就是这种。我将如何在 Fish 中执行此操作?
Fish shell 似乎没有那种for
循环,而是需要您采取不同的方法。(其哲学显然是尽可能少地依赖句法结构和运算符,并尽可能多地使用命令。)
这是我的做法,尽管我认为有更好的方法:
for CHAR in (seq $COLUMNS)
printf $argv[1]
end
这出现在函数内部,因此$argv[1]
.
我相信@iconoclast 的答案是正确的答案。
我在这里只是为了提供一个(不是更好的)替代方案。
在 fish shell 中的简短搜索似乎表明它提供了以下形式的 while 循环:
while true
echo "Loop forever"
end
在 C/C++ 101 中,我们了解到 for 循环可以(大部分)通过以下方式转换为 while 循环:
for (A; B; C) {
D;
}
翻译成
A;
while (B) {
D;
C;
}
如果条件和“增量”不是直截了当的,这就是您可以考虑的。