从 powershell/batch 向八度脚本传递和读取自定义参数
Pass and read custom argument to an octave script from powershell/batch
我想知道在一般情况下从 Powershell/batch 执行八度脚本时是否可以直接传递自定义参数。让我们举个例子:
$octaveExePath = "C:\Octave\Octave-7.1.0\mingw64\bin\octave-cli.exe"
# Executing the script
& $octaveExePath test.m "some_custom_string"
有没有办法从 test.m
脚本中接收自定义参数?
编辑 1
我已经按照@Ander 的建议做了,但没有成功,我想在这种情况下,matlab 和 octave beaviuor 确实不同。我的结果制作和 example.m
文件
function []=example(arg1)
disp(arg1)
endfunction
然后从电源调用它shell
& "C:\Octave\Octave-7.1.0\mingw64\bin\octave-cli-7.1.0.exe" example.m asd
Return错误
error: 'arg1' undefined near line 2, column 7
error: called from
example at line 2 column 2
编辑 2
更具体地说,我的目标是知道是否有一种方法可以将参数从 shell 直接传递给八度程序,而无需使用某些外部文件,例如 this artcile
我已经详细阐述了一个简单的解决方法,可以在 Windows 环境中工作时将变量传递给八度脚本。问题是在 Windows 下无法创建 Octave 可执行程序,如 the documentation.
中所述
无论如何,这个解决方法在某种程度上接近于@Tasos 的建议,对此我深表感谢。
假设我们有一个包含一行代码的 tentative.m
文件:
disp(external_variable)
没有变量声明。
在外部我们只按顺序执行几行 powershell 代码(确保 powershell 的位置与您创建脚本的位置相同):
$octaveExePath = "C:\Octave\Octave-7.1.0\mingw64\bin\octave-7.1.0.exe"
$externalVariable = "just a little try"
& $octaveExePath --eval "external_variable='$($externalVariable)'; tentative"
此结果与输出:
just a little try
因此,通过这种方式,我已经通过外部执行“绕过”--eval
和 FILE
命令行选项相互排斥的事实,成功地将外部值“传递”给八度脚本(据我所知)。唯一的警告点是,在使用此技术时,非初始化变量(在脚本中)必须与外部评估的变量名称协调(名称必须相同)。
我希望已经清楚了,这可以帮助其他人,请考虑在这种情况下投票。
我想知道在一般情况下从 Powershell/batch 执行八度脚本时是否可以直接传递自定义参数。让我们举个例子:
$octaveExePath = "C:\Octave\Octave-7.1.0\mingw64\bin\octave-cli.exe"
# Executing the script
& $octaveExePath test.m "some_custom_string"
有没有办法从 test.m
脚本中接收自定义参数?
编辑 1
我已经按照@Ander 的建议做了,但没有成功,我想在这种情况下,matlab 和 octave beaviuor 确实不同。我的结果制作和 example.m
文件
function []=example(arg1)
disp(arg1)
endfunction
然后从电源调用它shell
& "C:\Octave\Octave-7.1.0\mingw64\bin\octave-cli-7.1.0.exe" example.m asd
Return错误
error: 'arg1' undefined near line 2, column 7
error: called from
example at line 2 column 2
编辑 2
更具体地说,我的目标是知道是否有一种方法可以将参数从 shell 直接传递给八度程序,而无需使用某些外部文件,例如 this artcile
我已经详细阐述了一个简单的解决方法,可以在 Windows 环境中工作时将变量传递给八度脚本。问题是在 Windows 下无法创建 Octave 可执行程序,如 the documentation.
中所述无论如何,这个解决方法在某种程度上接近于@Tasos 的建议,对此我深表感谢。
假设我们有一个包含一行代码的 tentative.m
文件:
disp(external_variable)
没有变量声明。
在外部我们只按顺序执行几行 powershell 代码(确保 powershell 的位置与您创建脚本的位置相同):
$octaveExePath = "C:\Octave\Octave-7.1.0\mingw64\bin\octave-7.1.0.exe"
$externalVariable = "just a little try"
& $octaveExePath --eval "external_variable='$($externalVariable)'; tentative"
此结果与输出:
just a little try
因此,通过这种方式,我已经通过外部执行“绕过”--eval
和 FILE
命令行选项相互排斥的事实,成功地将外部值“传递”给八度脚本(据我所知)。唯一的警告点是,在使用此技术时,非初始化变量(在脚本中)必须与外部评估的变量名称协调(名称必须相同)。
我希望已经清楚了,这可以帮助其他人,请考虑在这种情况下投票。