概要
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.1.0 Kernel for Mac OS X x86 (64‐bit)
Copyright 1988-2024 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カーネルの実行可能ファイルへのパス.