与えられた値に応じて、いくつかのスクリプトの内の1つ実行します。引数と順番にマッチします。インタプリタに再帰的に渡すことにより実行し、実行の結果を返します。引数がdefaultであれば、それはあらゆるものにマッチします。switchは空文字列を返します。switchの最初のいくつかの引数が-で始まっている場合、それらはオプションとして扱われます。次のオプションが現在サポートされています。パターンの比較で厳格なマッチが使われます。これがデフォルトです。matchコマンドの実装と同じ)。参照ページに示されたように)正規表現でのマッチが行われます。-オプションの終了を示します。引数のために2つの文法がサポートされています。1番目は各パターンとコマンドに個別の引数を使います。この形式はいくつかのパターンやコマンドで置き換えが求められているときに便利です。2番目の形式はすべてのパターンとコマンドを一緒に1つの引数の中に置きます。引数リストの要素がパターンとコマンドのペアで構成する適切なリスト構造を持たなければなりません。2番目の形式は複数行に渡るswicthコマンドを構成することを容易にします。全リストの周りの中括弧は、各行の終わりにバックスラッシュを入れることを避けるためです。引数が中括弧の中にあるので、それらのコマンドや変数の置き換えは行われません。これで、時には1番目の形式と2番目の形式の動きを異なるものにします。"-"のボディをもつと、その次のボディが使われます。いくつかのパターンの間で共有することが可能にします。コメントをswitchコマンドの中に配置するときに注意が必要です。コメントは各パターンの実行ボディの中だけに置かれるべきであり、パターンと混ざらせる事はできません。以下はswitchコマンドの使用例です。3}}は3を返します。