你如何在bash中代表EOF?

我正在做一些类似的事情
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

相关文章

用的openwrt路由器,家里宽带申请了动态公网ip,为了方便把2...
#!/bin/bashcommand1&command2&wait从Shell脚本并行...
1.先查出MAMP下面集成的PHP版本cd/Applications/MAMP/bin/ph...
1、先输入locale-a,查看一下现在已安装的语言2、若不存在如...
BashPerlTclsyntaxdiff1.进制数表示Languagebinaryoctalhexa...
正常安装了k8s后,使用kubect工具后接的命令不能直接tab补全...