概要
wolframscript -code code [-cloud [cloudbase] | -local [kernelpath]] [arg1 …]
wolframscript -file file|url [-cloud [cloudbase] | -local [kernelpath]] [arg1 …]
wolframscript -api url|uuid|file [-cloud [cloudbase] | -local [kernelpath]] [-args key=value …]
wolframscript -function code [-cloud [cloudbase] | -local [-kernelpath]] [-signature type …] [-args values …]
オプション
コードオプション
-c|-code code — 実行するWolfram言語コードを与える.
-f|-file file — 実行するWolfram言語コードを含むファイルを与える.
-api url|uuid|file — 指定されたURLのAPI,指定されたUUIDを持つクラウドオブジェクトあるいはローカルオブジェクトからのAPI,あるいは指定されたローカルファイルからのAPIを使用する.引数 key=value …を使う.
-fun|-function code [-s|-signature type …] [-args|-- value …] — 引数が文字列 value …であり,タイプ type …のものであると解釈される関数を使う.シグナチャが与えられていない場合には,すべての引数は文字列であると仮定される.シグナチャのタイプはどの$InterpreterTypesでもよい.
実行オプション
-l|-local [kernelpath] — Wolfram Engineカーネルへの指定されたパスを使って,コードを局所的に実行する.デフォルトで kernelpath はローカルシステム上で見付かった最新バージョンのWolfram言語を使う.
-o|-cloud [cloudbase] — 指定されたクラウドベースを使ってクラウド内でコードを実行する.デフォルトで,cloudbase はhttps://wolframcloud.comである.
-wstpserver [wstpserverbase] — wstpserverbase で指定されたWSTPServerでコードを実行する.デフォルトで, wstpserverbase はポート31415である.
-format type — 出力を返す形式を指定する.Exportが理解する任意の形式が使える.
-charset encoding — encoding を出力に使う.エンコードは,生のバイトを出力するためのNone,あるいは"Unicode"以外の $CharacterEncodingsの任意の入力でよい.デフォルトでは,ターミナルの言語設定から値を推測する.
-linewise — 読み取られる標準入力の各行のコードを実行する.
-print [all] — スクリプトを実行する場合には,スクリプトのサイドの行を実行した結果,あるいはallが与えられている場合には各行を実行した結果を表示する.
-timeout seconds [value] — 実行に許す秒数を指定する.時間が超過した場合には value を返す.
-v|-verbose — 実行中に追加的な情報を表示する.
WSTPServerオプション
-wstpserver [wstpserverbase] — wstpserverbase で指定されたWSTPServerでコードを実行する.デフォルトで, wstpserverbaseはポート31415である.
-startprofile file — WSTPServerのカーネルプロファイルを作成するか,既存のカーネルプロファイルファイルを使うかし,カーネルIDを保存する.
-continueprofile file — WSTPServerのカーネルプロファイルファイルで指定されたカーネルで続行する.
-startprofile — 現行のシェルセッションにWSTPServerのカーネルプロファイル情報を保存する.
-continueprofile — 現行のシェルセッションに保存された,WSTPServerのカーネルプロファイル情報で指定されたカーネルで続行する.
-kernelid id — ID id が割り当てられた,特定のWSTPServerが管理するカーネルを使う.
-kernelpool pool — WSTPServerが管理するカーネルをプール pool で使う.
ユーティリティオプション
-version — WolframScriptのバージョンを表示する.
-auth|-authenticate [wolframid [password]] [-cloud cloudbase] — 特定のWolframIDとパスワードを指定して,クラウドでの認証を行う.IDとパスワードが与えられていない場合には,与えるように指示を出す.それぞれのクラウドに異なる認証を指定することもできる.
-username [wolframid] — クラウドでの認証に使うWolfram IDを指定する.
-password [password] — クラウドでの認証に使うパスワードを指定する.
-permissionskey key — パーミッションキーを使って,クラウドのリソースにアクセスする.
-entitlement id — オンデマンドのライセンス使用権IDを使って,カーネルをアクティベートする.
-listwstpservers — 見付かったWSTPServerサービスの詳細をリストする.
-config|-configure [key=value …] — 特定の設定変数キー用の値を指定することでWolframScriptを設定する.
詳細
Wolfram言語スクリプト
#!wolframscript … の行で指定されたオプションは,スクリプトがUnixスタイルのシェルで起動されない限り無視される.
標準的なオプションがすべて#!wolframscriptスクリプトで使用できる.
#!wolframscript -function とすると,関数の各引数をスクリプトコマンドライン上で与えることができる.…
#!wolframscript -api … とすると,-key value …という形式でAPIのパラメータをスクリプトコマンドライン上で与えることができる.
スクリプトの実行からの終了コードは,Exit[code]を使って指定することができる.
-printがなければ,Print[expr]を使って明示的に指定されない限り,出力がstdoutに送信されることはない.
オプション-printを使うと,スクリプトの最終行からの結果がstdoutに送信される.
オプション-print allを使うと,スクリプトの各行からの結果が生成されたときにstdoutに送信される.
-linewiseオプションを使って,入力されるたびに単一行のstdinを取り,スクリプトを複数回実行することができる.
コマンドライン入力
stdin上のスクリプトの与えられた入力は,Wolfram言語コードでは$ScriptInputStringを使ってアクセスすることができる.
コマンドラインに与えられた引数は,$ScriptCommandLineを使ってアクセスすることができる.
出力の形式
TotalWidthのデフォルト設定はInfinityである.
API のパラメータ
APIがx-url,x-format,_timeout等の拡張パラメータをサポートする場合には,これらのパラメータはwolframscript -api内で与えることができる.
コードの位置
wolframscript -api では,LocalObject["uuid"] が存在する場合にはそれが使われ,それ以外の場合にはCloudObject["uuid"]が使われる.uuid
WSTPServerの使用の詳細
WolframScriptは,ネットワーク上で公表されたWSTPServerサービスを見付けるために,DNS Service Discovery (DNS-SD)を使うことができる.
オプション-listwstpserversを使うと,WolframScriptは見付けたWSTPServerサービスを表示する.
オプション-wstpserver wstpserverbase で,wstpserverbase は形式 port[@hostname]のリンク名,WSTPServerサービスの名前,形式wstp://hostname[:port][/kernelSpecifier]のURLのいずれかでよい.デフォルトで,wstpserverbase は31415である.kernelSpecifier は,カーネルIDでもプール名でもよい.kernelSpecifier が提供されている場合には,WolframScriptはWSTPServerが管理する指定のカーネルを使う.kernelSpecifier が省略されると,WolframScriptはデフォルトプールから,WSTPServerによって提供されるカーネルを使う.
オプション-wstpserver wstpserverbase が与えられていない場合には,WolframScriptはデフォルトの wstpserverbase でWSTPServerに接続しようとする.接続に失敗すると,WolframScriptは自動的に見付かったWSTPServerサービスに接続しようとする.
WolframScriptは,主にWSTPServerをインタラクトするためにプロファイルを使う.プロファイルは,WSTPServerが管理するカーネルについての記述を含むファイルである.この記述が取らなくてはならない形式は,下の「プロファイル変数」セクションに与えられている.
オプション-startprofile file が与えられている場合には,WolframScriptは file にプロファイルを作成する.file がすでに存在する場合には,WolframScriptは,file によって説明されるカーネルを使うが,ファイル中のカーネルIDはどれも無視する.WolframScriptは,将来-continueprofile file で使用するために,厳密なカーネルのIDを file に保存する.
オプション-startprofileが与えられ,file が提供されていない場合,そしてシェルから実行する場合には,WolframScriptは厳密なカーネルのIDを,-continueprofileで将来使う場合のために,一次的に現行のシェルセッションに保存する.-wstpserverは提供されているが,-continueprofileは提供されていないという場合にも同様である.WolframScriptはデフォルトのカーネルプールかWSTPServerによって提供されるカーネルを使う.保存されたIDは,-startprofileが与えられてから3時間後に無効になる.file が提供されておらず,シェルから実行していない場合には,WolframScriptは失敗する.
オプション-continueprofile file が与えられている場合には,WolframScriptは,先に-startprofile file に与えられたプロファイル file によって指定されたWSTPServerが管理するカーネルから続行する.file が先に-startprofileに提供されていなかった場合には,WolframScriptは失敗する.
オプション-continueprofileが与えられているが,file は与えられず,シェルから実行している場合には,WolframScriptは, -startprofileによって現行シェルセッションで先に使用されたWSTPServerが管理するカーネルから続行する.-startprofileが現行のシェルセッションで使用されていない場合には,WolframScriptは失敗する.
例題
コマンドラインからのコード
Wolfram言語のコード2+2をローカルのWolfram Engine上で評価する:
$ wolframscript -code 2+2
4
Wolfram言語のコード2+2をWolfram Cloudで評価し,必要であれば認証を行うように指示する:
$ wolframscript -cloud -code 2+2
4
ネットワーク上で実行中のWSTPServerの使用が可能であれば, Wolfram言語のコード2+2をそのWSTPServerで評価する:
$ wolframscript -wstpserver -code 2+2
4
Wolfram言語のコードを局所的に評価し,Unixスタイルのシェルの入力をエスケープする:
$ wolframscript -code 'StringReverse["hello"]'
olleh
Wolfram言語のコードを局所的に評価し,Windowsのcmd.exeシェルの入力をエスケープする:
> wolframscript -code StringReverse[\"hello\"]
olleh
$ wolframscript -code "Graphics3D[Sphere[ ]]" -format PNG > file.png
ファイルからのコード
Wolfram言語のコードをファイルから評価し,生成された最後の結果を返す:
$ wolframscript -file test.wl
12345
ローカルファイルからコードを取り出すが,実行はクラウドで行う:
$ wolframscript -cloud -file test.wl
12345
スクリプトファイル
Wolfram言語のコードを局所的に実行するように設定されたファイル:
$ ./file.wls
4
Wolfram言語のコードをWolfram Cloud内でUnixスタイルのシェルで実行するファイル:
$ ./file.wls
4
実行中のWSTPServerでWolfram言語のコードをUnixスタイルのシェルで実行するファイル:
$ ./file.wls
4
$ ./file.wls 5
25
Unixスタイルのシェルでコマンドラインからの引数を持つ関数を与えるファイル:
$ ./file.wls "New York" London
Quantity[3453.7070027090986, Miles]
インタラクティブな操作
$ wolframscript
Wolfram 14.3.0 Kernel for Mac OS X ARM (64‐bit)
Copyright 1988-2025 Wolfram Research, Inc.
In[1]:= 2+2
Out[1]= 4
In[2]:=
実行中のWSTPServerを使って,Wolfram言語をインタラクティブなREPLで実行する:
$ wolframscript -wstpserver
In[1]:= 2+2
Out[1]= 4
In[2]:=
API
$ wolframscript -api https://wolfr.am/bNvKWq2U -args x=1 y=2
3
クラウドからAPIのコードを取得するが,APIを局所的に実行する:
$ wolframscript -api https://wolfr.am/bNvKWq2U -local -args x=1 y=2
3
追加例題
$ wolframscript -authenticate
Enter WolframID: example-user@wolfram.com
Password:
Success. Saving connection data.
$ wolframscript -username example-user@wolfram.com -password XXXXXX
Success. Saving connection data.
$ wolframscript -disconnect
入力ファイルの各行の文字列の順序を逆にし,Unixスタイルのシェルでその結果を別のファイルに書く:
$ wolframscript -code 'StringReverse[$ScriptInputString]' -linewise < file1 > file2
入力ファイルの各行の文字列の順序を逆にし,Windows上でcmd.exeを使ってその結果を別のファイルに書く:
> wolframscript -code StringReverse[$ScriptInputString] -linewise < file1 > file2
$ wolframscript -code "Do[Print[i];Pause[1], {i,10}]" -timeout 3
1
2
3
$TimedOut
$ wolframscript -code 'Alphabet["Greek"]' -charset UTF8
{α, β, γ, δ, ε, ζ, η, θ, ι, κ, λ, μ, ν, ξ, ο, π, ρ, σ, τ, υ, φ, χ, ψ, ω}
Windows上でcmd.exeを使って出力に特定の文字集合を使う:
> wolframscript -code Alphabet[\"Greek\"] -charset UTF8
{α, β, γ, δ, ε, ζ, η, θ, ι, κ, λ, μ, ν, ξ, ο, π, ρ, σ, τ, υ, φ, χ, ψ, ω}
Unixスタイルのシェルでスクリプトに-printと-formatのオプションを使い,画像を生成する:
#!/usr/bin/env wolframscript -print -format PNG
ListLinePlot[RandomFunction[WienerProcess[],{0,10,0.01},10]]
$ ./file.wls > plot.png
Unixスタイルのシェルで-print Allオプションを使って,スクリプトの実行中に生成された結果それぞれを表示させる:
#!/usr/bin/env wolframscript -print All
"Using -print All print will each result"
a = 2+2; (* This line won't print because the ; suppresses output *)
a
$ ./file.wls
Using -print All will each result
4
PermissionsKeyで保護されるAPIを作成し,キーをWolframScriptに渡してAPIにアクセスする:
$ wolframscript -api 83aa0bc2-8e0c-4ef6-b314-48e0bf283196 -args n=5 -permissionskey thekey
25
$ wolframscript -version
WolframScript 1.2.0 for MacOSX-x86-64
$ wolframscript -config WOLFRAMSCRIPT_KERNELPATH=/Applications/Mathematica.app/MacOS/WolframKernel
Configured:WOLFRAMSCRIPT_KERNELPATH=/Applications/Mathematica.app/MacOS/WolframKernel
WOLFRAM言語の変数
WolframScriptが実行を開始したときに,以下の変数が設定される.
$CommandLine — 使用された完全なコマンドラインを返す文字列のリスト.
$ScriptCommandLine — 実行されているスクリプト用のコマンドライン引数のリスト.これらは-option で与えられるオプションの後ろに来る.
$ScriptInputString — 標準入力を通してスクリプトに供給された入力を与える文字列.オプション-linewiseは,この変数をスクリプトの各反復について1行の標準入力でロードする.
環境変数
WOLFRAMSCRIPT_AUTHENTICATIONPATH — 認証情報を保存するフォルダ.
WOLFRAMSCRIPT_CONFIGURATIONPATH — 永続的な設定情報を保存するファイル.
WOLFRAMSCRIPT_CLOUDBASE — WolframScriptで使用するデフォルトのクラウドベース.
WOLFRAMSCRIPT_ENTITLEMENTID — 使用中のカーネルをアクティベートするための,オンデマンドのライセンス使用権ID.
WOLFRAMSCRIPT_KERNELPATH — デフォルトのローカルWolfram Engineカーネルの実行可能ファイルへのパス.
テクニカルノート
関連項目
$ScriptCommandLine $ScriptInputString $IgnoreEOF $BatchOutput
形式: WL
プログラム: wolfram wstpserver WolframNB