我正在做一些类似的事情
read -d EOF stdin for word in $stdin; do stuff; done
在那里我要替换’EOF’来实际表示文件的结尾。
编辑:感谢您的答案,这确实是我想要做的。当我看到stdin = $(cat)的时候,我实际上已经有了一个facepalm的时刻
只是为了踢,虽然你会如何匹配像C-d(或C-v M-v等),基本上只是一个字符结合控制,Alt,Shift,无论在bash?
没有文件结束字符真的。当您按Ctrl-d或类似的字符时,终端驱动程序会通过返回一个无效的值向读取应用程序发送文件结束。当您到达文件的末尾时,操作系统也会这样做。这是通过使用整数而不是一个字节来完成的(因此您的范围类似于-2 ^ 16 .. 2 ^ 16而不是仅0..255),并返回超出范围的值 – 通常为-1。但是,没有任何代表eof的角色,因为它的整个目的不是一个角色。如果你想从stdin读取所有内容,直到文件结束,请尝试
stdin=$(cat) for word in $stdin; do stuff; done
然而,这将读取变量中的整个标准输入。您可以使用数组只为一行分配内存,并将一行中的读取单词读入该数组:
while read -r -a array; do for word in "${array[@]}"; do stuff; done done
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。