WolframScript

名前

wolframscript Wolfram言語用のコマンドラインスクリプトのインタープリタ

概要

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 ]

説明

WolframScriptは,Wolfram言語のコード,関数,および配備されたAPIを局所的に実行,あるいはクラウドかWSTPServerで実行し,標準的な入力,コマンドライン引数,ファイル,URL等からの入力を可能にする.

例題

コマンドラインからのコード

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
#!/usr/bin/env wolframscript
Print[2+2]
$ ./file.wls
4

Wolfram言語のコードをWolfram Cloud内でUnixスタイルのシェルで実行するファイル:

file.wls
#!/usr/bin/env wolframscript -cloud
Print[2+2]
$ ./file.wls
4

実行中のWSTPServerでWolfram言語のコードをUnixスタイルのシェルで実行するファイル:

file.wls
#!/usr/bin/env wolframscript -wstpserver
Print[2+2]
$ ./file.wls
4

コマンドライン引数を使用するファイル:

file.wls
#!/usr/bin/env wolframscript
Print[ToExpression[$ScriptCommandLine[[2]]]^2]
$ ./file.wls 5
25

Unixスタイルのシェルでコマンドラインからの引数を持つ関数を与えるファイル:

file.wls
#!/usr/bin/env wolframscript -function -signature City City
GeoDistance[#1, #2]&
$ ./file.wls "New York" London
Quantity[3453.7070027090986, Miles]

インタラクティブな操作

Wolfram言語をインタラクティブなREPLで実行する:

$ wolframscript
Wolfram Language {RelatedLinks-NeuralNetRepository.png}.0 for Microsoft Windows (64-bit)
Copyright 1988-{RelatedLinks-NeuralNetRepository.png} 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

クラウド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

Unixスタイルのシェルで出力に特定の文字集合を使う:

$ wolframscript -code 'Alphabet["Greek"]' -charset UTF8
{α, β, γ, δ, ε, ζ, η, θ, ι, κ, λ, μ, ν, ξ, ο, π, ρ, σ, τ, υ, φ, χ, ψ, ω}

Windows上でcmd.exeを使って出力に特定の文字集合を使う:

> wolframscript -code Alphabet[\"Greek\"] -charset UTF8
{α, β, γ, δ, ε, ζ, η, θ, ι, κ, λ, μ, ν, ξ, ο, π, ρ, σ, τ, υ, φ, χ, ψ, ω}

Unixスタイルのシェルでスクリプトに-print-formatのオプションを使い,画像を生成する:

file.wls
#!/usr/bin/env wolframscript -print -format PNG
ListLinePlot[RandomFunction[WienerProcess[],{0,10,0.01},10]]
$ ./file.wls > plot.png

Unixスタイルのシェルで-print Allオプションを使って,スクリプトの実行中に生成された結果それぞれを表示させる:

file.wls
#!/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のバージョンを確かめる:

$ wolframscript -version
WolframScript 1.2.0 for MacOSX-x86-64

特定のWolframEngineを使うように設定する:

$ wolframscript -config WOLFRAMSCRIPT_KERNELPATH=/Applications/Mathematica.app/MacOS/WolframKernel
Configured:WOLFRAMSCRIPT_KERNELPATH=/Applications/Mathematica.app/MacOS/WolframKernel

オプション

コードオプション

-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] 指定されたクラウドベースを使ってクラウド内でコードを実行する.デフォルトで,cloudbasehttps://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 で使う.

ユーティリティオプション

-h|-help ヘルプのテキストを表示する.

-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を設定する.

-disconnect [-cloud cloudbase] 認証情報を削除し,クラウドへの接続を切る.

詳細

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-urlx-format_timeout等の拡張パラメータをサポートする場合には,これらのパラメータはwolframscript -api内で与えることができる.

コードの位置

wolframscript -api uuid では,LocalObject["uuid"] が存在する場合にはそれが使われ,それ以外の場合にはCloudObject["uuid"]が使われる.

WSTPServerの使用の詳細

WolframScriptは,ネットワーク上で公表されたWSTPServerサービスを見付けるために,DNS Service Discovery (DNS-SD)を使うことができる.

オプション-listwstpserversを使うと,WolframScriptは見付けたWSTPServerサービスを表示する.

オプション-wstpserver wstpserverbase で,wstpserverbase は形式 port[@hostname]のリンク名,WSTPServerサービスの名前,形式wstp://hostname[:port][/kernelSpecifier]のURLのいずれかでよい.デフォルトで,wstpserverbase31415である.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は失敗する.

ファイル

デフォルトの設定ファイル:

  • %APPDATA%\Wolfram\WolframScript\WolframScript.conf
    Windows
    ~/Library/Application\ Support/Wolfram/WolframScript/WolframScript.conf
    Macintosh
    ~/.config/Wolfram/WolframScript/WolframScript.conf
    Unix

デフォルトの認証フォルダ:

  • %LOCALAPPDATA%\Wolfram\WolframScript\
    Windows
    ~/Library/Caches/Wolfram/WolframScript/
    Macintosh
    ~/.cache/Wolfram/WolframScript/
    Unix

WOLFRAM言語の変数

WolframScriptが実行を開始したときに,以下の変数が設定される.

$CommandLine 使用された完全なコマンドラインを返す文字列のリスト.

$ScriptCommandLine 実行されているスクリプト用のコマンドライン引数のリスト.これらは-option で与えられるオプションの後ろに来る.

$ScriptInputString 標準入力を通してスクリプトに供給された入力を与える文字列.オプション-linewiseは,この変数をスクリプトの各反復について1行の標準入力でロードする.

環境変数

WOLFRAMSCRIPT_AUTHENTICATIONPATH 認証情報を保存するフォルダ.

WOLFRAMSCRIPT_CONFIGURATIONPATH 永続的な設定情報を保存するファイル.

WOLFRAMSCRIPT_CLOUDBASE WolframScriptで使用するデフォルトのクラウドベース.

WOLFRAMSCRIPT_ENTITLEMENTID 使用中のカーネルをアクティベートするための,オンデマンドのライセンス使用権ID.

WOLFRAMSCRIPT_KERNELPATH デフォルトのローカルWolfram Engineカーネルの実行可能ファイルへのパス.

WSTPSERVERプロファイル変数

WSTPSERVER 希望のカーネルを管理するWSTPServerのWSTPServerベース.

POOL 希望のカーネルのプールの名前.

KERNELPATH 希望のカーネルのカーネルパス.

KEEPALIVE 希望のカーネルのブリッジを破棄した際にカーネルを閉じるかどうかのブール設定.

RESERVEONDISCONNECT 希望のカーネルのブリッジを破棄した際にカーネルを元に戻すかどうかのブール設定.

プロファイル変数が提供されていない場合には,WolframScriptがそのプロファイル変数に従って,WSTPServerが管理するカーネルを選ぶことはない.