For loop 有没有办法查看在for循环中迭代的列表?
我对zsh脚本中的For loop 有没有办法查看在for循环中迭代的列表?,for-loop,zsh,For Loop,Zsh,我对zsh脚本中的for-循环有问题。当它结束时,它会分离故障 我在done前后插入了echo-语句,之前的语句被打印(循环执行时多次),但第二个语句从未出现,而是发生了seg故障 该列表由一个非平凡的命令替换生成。 我使用相同的列表生成器尝试了一个简单的循环,只使用循环变量的echo作为主体,工作正常,没有seg故障。它还显示列表末尾没有虚假元素 这似乎仍然是一个关于-循环的单词列表的结尾,但我不知道在哪里继续我的调查。帮助?简单的循环运行正常表明列表生成器本身没有导致错误的错误 由于原始循环
for
-循环有问题。当它结束时,它会分离故障
我在done
前后插入了echo
-语句,之前的语句被打印(循环执行时多次),但第二个语句从未出现,而是发生了seg故障
该列表由一个非平凡的命令替换生成。
我使用相同的列表生成器尝试了一个简单的循环,只使用循环变量的echo
作为主体,工作正常,没有seg故障。它还显示列表末尾没有虚假元素
这似乎仍然是一个关于-循环的
单词列表的结尾,但我不知道在哪里继续我的调查。帮助?简单的循环运行正常表明列表生成器本身没有导致错误的错误
由于原始循环也会打印每个(预期的)echo
,除了循环后面的那一个,因此在最后一个元素和循环结束之间肯定会出现问题。在循环中的最后一个回显
与循环后面的一个之间发生任何事情的唯一原因是,如果循环未完成,则只有在单词列表中有更多元素时才会发生
因此,最有可能的是列表末尾有一个虚假元素,但仅用回音就看不到它(很容易)。例如\b
:
prompt% for a in a b c; do echo $a; done
a
b
c
prompt% for a in a b c '\b'; do echo $a; done
a
b
c
prompt%
为了确保没有遗漏任何内容,可以将echo
的输出通过管道传输到hextump-C
prompt% for a in a b c '\b'; do echo $a | hexdump -C ;done
00000000 61 0a |a.|
00000002
00000000 62 0a |b.|
00000002
00000000 63 0a |c.|
00000002
00000000 08 0a |..|
00000002
prompt%