Julia 朱莉娅:如何从朱莉娅代码执行系统命令?
我已经创建了一个字符串Julia 朱莉娅:如何从朱莉娅代码执行系统命令?,julia,Julia,我已经创建了一个字符串 x = "ls" 我想把Julia的x作为字符串执行。我该怎么做 ls只是一个虚构的例子,我实际上想执行一个更复杂的命令,所以请不要告诉我pwd()有效 实际的命令可能是split c:/data/Performance\u All/Performance\u 2000Q1.txt-nl/3-d/c/data/Performance\u All\u split/Performance\u 2000Q1.txt您可以简单地使用Cmd对象来运行。您可以使用字符串通过`和插值
x = "ls"
我想把Julia的x
作为字符串执行。我该怎么做
ls
只是一个虚构的例子,我实际上想执行一个更复杂的命令,所以请不要告诉我pwd()
有效
实际的命令可能是
split c:/data/Performance\u All/Performance\u 2000Q1.txt-nl/3-d/c/data/Performance\u All\u split/Performance\u 2000Q1.txt
您可以简单地使用Cmd
对象来运行。您可以使用字符串通过`
和插值运算符$
或通过Cmd
构造函数创建Cmd
对象
这里有一个例子。不过,您可能需要检查文件路径
x = "split"
path1 = "c:/data/Performance_All/Performance_2000Q1.txt"
option1 = "-n l/3"
option2 = "-d"
path2 = "/c/data/Performance_All_split/Performance_2000Q1.txt"
run(`$x $path1 $option1 $option2 $path2`) # remember the backticks ``
即使文件路径中有空格,也不需要使用引号。command对象运行程序并将参数直接传递给它,而不是通过shell
您可能需要阅读相关的手册条目。
Base::read
可用于运行命令并读取其结果
您可以在中找到运行命令的用法示例
重要的是将命令及其参数包装为反勾号。e、 g
我不确定我是否理解你的问题,但威尔x=@cmd“ls”;运行(x)
执行您想要的操作?我收到IOError:无法spanw`split-n l/3-d。。。。。不是这样的文件或目录错误。有什么想法吗?正如我在回答中所说的,您可能希望检查文件路径(它们似乎是错误的),并确保命令split
位于您的路径中。否则,将其添加到您的路径中,确保其可执行等。实际上,``要求您将组件放入逻辑组中,例如m=split abc.txt def.txt;运行(
m)代码>将在m=“abc.txt”时失败;out=“def.txt”;运行(`split$m$out`)
将起作用。这同样适用于像-d
和-n3/l
这样的选项,您需要执行选项1=“-nl/3”;选项2=“-d”;运行(`x$path1$option1$option2$path2`)
;如果你改变它,我会告诉你一个可怕的错误。你是对的!两个选项都会在一个选项中自动引用,从而导致问题。始终可以打印命令对象以检查错误。
out = ""
try
global out
out = read(`$x`, String)
catch ex
@error ex
end