我有一个csv类型的文件。我希望能够从命令行调用一个函数,并将该文件的内容(而不是文件本身)提供给它。
我尝试致电
mix run lib/my_module.ex $(cat tmp.txt)
在我的模块文件末尾:
IO.puts MyModule.my_func(System.argv)
内容已正确处理到函数,但是System.argv
是字符串列表,它失去了格式,无法正确解析。
如果我改为尝试
mix run -e "MyModule.my_func(:args)"
我找不到如何使用cat
或其他方式来向其提供文件内容。
如何使其工作?
答案 0 :(得分:1)
尝试在引号之间加上引号,例如:mix run lib/my_module.ex "$(cat tmp.txt)"
答案 1 :(得分:1)
在我看来,这就像XY Problem。仅传递文件的名称,然后在模块内File.read/1
进行。
有点像:
mix run lib/my_module.ex tmp.txt
并在您的模块中:
System.argv
|> File.read!()
|> MyModule.my_func()
|> IO.puts()