加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

你如何在bash中代表EOF?

发布时间:2020-12-15 19:08:41 所属栏目:安全 来源:网络整理
导读:我正在做一些类似的事情 read -d EOF stdinfor word in $stdin; do stuff; done 在那里我要替换’EOF’来实际表示文件的结尾。 编辑:感谢您的答案,这确实是我想要做的。当我看到stdin = $(cat)的时候,我实际上已经有了一个facepalm的时刻 只是为了踢,虽
我正在做一些类似的事情
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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读