我正在使用strace此代码:
#!/usr/bin/env bash
exec 0<test.log
while IFS= read -r line; do
printf "%s\n" "$line"
done
Run Code Online (Sandbox Code Playgroud)
(直接<test.log重定向给出相同的结果。)
对于每个读取行,我都会收到此错误:
ioctl(0, TCGETS, 0x7fff1e645d50) = -1 ENOTTY (Inappropriate ioctl for device)
Run Code Online (Sandbox Code Playgroud)
我做了一些研究,这是最近的答案。但这远非现场。我的脚本工作正常,我只是想知道这是我应该处理的事情还是 Bash 的标准方式。ioctl为每一行调用该函数是不是很引人注目?我有一个想法,-uBash的参数可能是相关的:
-u fd Read input from file descriptor fd.
Run Code Online (Sandbox Code Playgroud)
我做了一些实验,无济于事。所以这个选项应该如何使用可能是另一个问题。
我在 Ubuntu 16.04 上使用 Bash 4.3.48(1)-release。
| 归档时间: |
|
| 查看次数: |
24369 次 |
| 最近记录: |