Gam
Gam

Reputation: 322

Pass and read custom argument to an octave script from powershell/batch

I would like to know if it possible to pass directly a custom argument when executing an octave script from Powershell/batch in general. Lets make an example:

$octaveExePath = "C:\Octave\Octave-7.1.0\mingw64\bin\octave-cli.exe"

# Executing the script
& $octaveExePath test.m "some_custom_string"

is there a way to receive the custom argument from inside the test.m script?

EDIT 1

I've done what suggested by @Ander without succes, I suppose that in this situation matlab and octave beaviuor are really different. My result making and example.m file

function []=example(arg1)
 disp(arg1)
endfunction

then calling it from powershell

& "C:\Octave\Octave-7.1.0\mingw64\bin\octave-cli-7.1.0.exe" example.m asd

Return the error

error: 'arg1' undefined near line 2, column 7
error: called from
    example at line 2 column 2

EDIT 2

To be more specific my goal is to know if there is a way to pass argument from a shell directly to an octave program without using some external file as done for example in this artcile

Upvotes: 1

Views: 506

Answers (1)

Gam
Gam

Reputation: 322

I've elaborated a simple workaround that enable passing variables to an octave script while working in a Windows environment. The problem is that under Windows is not possible to create Octave executable programs as said in the documentation.

Anyway this workaround is somehow near to what suggested by @Tasos to which my deepest thanks go to.

Let's say we have a tentative.m file with a single line of code:

disp(external_variable)

without the variable declaration.

Outside we execute just a few PowerShell lines of code in sequence (be sure that the position of PowerShell is the same of where you created the script):

$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" 

this result with the output:

just a little try

So, in this way I have successfully "passed" an external value to an octave script through external execution "bypassing" the fact that --eval and the FILE command line options are mutually exclusive (for what I know). The only point of warning is that while using this technique the non initialized variable (in the script) must be coordinated with the variable name evaluated externally (the names must be the same).

Upvotes: 1

Related Questions