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