我真的是这个领域的初学者......
我的问题是:如何在 shell 脚本(或 bash,我不确定它们之间的区别)中创建结构
例如在 C 中我们可以简单地:
struct name
{
__u8 x;
__u8 y;
signed short z;
float t;
float u;
};
是否可以在 shell 中创建类似的东西?
为什么?
我需要将一些值复制到/proc 文件..但我需要确定它们是 12 个字节,以及它们的顺序,因为我想将它们分配给 linux 内核中的先前结构模块
感谢您提供任何有用的答案或提示
最佳答案
我可以推荐一个更好的工具来完成这项工作吗,Python?它安装在大多数 Linux 系统上,您可以用它编写脚本,只需将适当的 shebang 放在顶部即可:
#! /usr/bin/python
或者,
#! /usr/bin/env python
然后使用struct将值打包成二进制表示的模块。
#! /usr/bin/env python
import sys, struct
# Convert first 5 arguments
args = [f(arg) for f,arg in zip([int,int,int,float,float], sys.argv[1:])]
sys.stdout.write(struct.pack('BBhff',*args))
相当于,
#! /usr/bin/env python
import sys, struct
x = int(sys.argv[1])
y = int(sys.argv[2])
z = int(sys.argv[3])
t = float(sys.argv[4])
u = float(sys.argv[5])
sys.stdout.write(struct.pack('BBhff',x,y,z,t,u))
并且可以调用为:
./script.py 1 2 3 4.0 5.0 > /proc/somefile...
编辑:或从另一个文件读取:
./script.py `cat args-file` > /proc/somefile...
关于linux - 在 shell 脚本中创建结构(数据结构),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7452372/