gpt4 book ai didi

bash - 你将如何在 bash 中表示 EOF?

转载 作者:行者123 更新时间:2023-11-29 08:45:12 25 4
gpt4 key购买 nike

我正在尝试做类似的事情

read -d EOF stdin

for word in $stdin; do stuff; done

我想将“EOF”替换为文件结尾字符的实际表示。

编辑:感谢您的回答,这确实是我想要做的。当我看到 stdin=$(cat) 哈哈

只是为了好玩,但您将如何匹配 C-d(或 C-v M-v 等)之类的东西,基本上只是一个字符与 Control、Alt、Shift 等 bash 中的任何内容相结合?

最佳答案

实际上并没有文件结束字符。当您按下 Ctrl-d 或类似字符时,终端驱动程序会通过返回无效值向读取应用程序发出已到达文件末尾的信号。当您到达文件末尾时,操作系统也会执行相同的操作。这是通过使用一个整数而不是一个字节来完成的(所以你的范围类似于 -2^16 .. 2^16,而不仅仅是 0..255)并返回一个超出范围的值 - 通常是 -1。但是没有代表 eof 的字符,因为它的全部目的是不是一个字符。如果您想从标准输入读取所有内容,直到文件末尾,请尝试

stdin=$(cat)
for word in $stdin; do stuff; done

然而,这会将整个标准输入读入变量。您可以使用数组只为一行分配内存,并使 read 将一行中的单词读入该数组:

while read -r -a array; do 
for word in "${array[@]}"; do
stuff;
done
done

关于bash - 你将如何在 bash 中表示 EOF?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/463913/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com