我正在检查 的输出中每个字段到底是什么ls -l
。中的例子 这个帖子解决了我的问题。但我再次想知道每个字段是什么类型。字符串很明显。但数字又如何呢?比如10
, 2048
, 它们是整数还是字符串?有什么方法可以检查每个字段的类型吗?
答案1
终端中的命令生成的文本是文本字符串。在终端中查看原始二进制数据,而不将其转换为某种文本表示形式,通常会产生“乱码输出”(例如,在cat
压缩文件上运行时),并且在某些情况下甚至可能使终端处于不可用状态。
输出中的数字ls -l
是文本字符串。
要将文本作为整数读取到例如 C 程序中,程序必须将它们作为文本字符串读取,然后使用例如将它们转换为整数strtol()
,或者使用scanf()
(或等效的)正确的格式字符串。
例如,读取整数的 Shell 工具awk
通常已经根据该工具实现的规则在幕后执行此转换。
旁注:AC 程序不应解析 输出中的数字ls -l
。它应该在 . 返回的文件上调用stat()
或。lstat()
readdir()