2011/02/11

gauche script の linux と windows

linux とかだと、例えば glp.scm という名前で
#! /usr/local/bin/gosh

(use gauche.parseopt)

(define (main args)
  (let-args (cdr args)
      ((ls "l|list")
       . rest)
    (if ls
        (for-each print *load-path*)
        (print *load-path*))
    0))

$ glp
(/usr/local/share/gauche-0.9/site/lib /usr/local/share/gauche-0.9/0.9.1/lib /usr/local/share/gauche/site/lib /usr/local/share/gauche/0.9/lib)
$ glp -l
/usr/local/share/gauche-0.9/site/lib
/usr/local/share/gauche-0.9/0.9.1/lib
/usr/local/share/gauche/site/lib
/usr/local/share/gauche/0.9/lib

で、windows だとこんな感じでできるみたい。
;; @rem -*- mode: scheme -*-
;; @echo off
;; gosh "%~f0" %*
;; goto :__gauche_script_end

(use gauche.parseopt)

(define (main args)
  (let-args (cdr args)
      ((ls "l|list")
       . rest)
    (if ls
        (for-each print *load-path*)
        (print *load-path*))
    0))

;;
;; :__gauche_script_end
;;
C:\>glp.scm.cmd
(C:\Gauche\share\gauche-0.9\site\lib C:\Gauche\share\gauche-0.9\0.9.1\lib C:\Gauche\share\gauche/site/lib C:\Gauche\share\gauche/0.9/lib)
C:\>glp.scm.cmd -l
C:\Gauche\share\gauche-0.9\site\lib
C:\Gauche\share\gauche-0.9\0.9.1\lib
C:\Gauche\share\gauche/site/lib
C:\Gauche\share\gauche/0.9/lib

検索したらこんなものが。。

追記

さっそく教えて頂きました!
@valvallow Windows だと拡張子 .scm を gosh に関連付けしておけばコマンドラインからファイル名を入力するだけでOKです。 更に環境変数 PATHEXT に拡張子を定義しておけばその拡張子を省略した名前がコマンド名として使えるようになります。
@valvallow 参考記事。 http://goo.gl/UidLd この記事ではコマンドで設定しています。 エクスプローラから関連付けするとコマンドライン引数がうまく渡されなくなってしまうことがあるようです。

詳解 シェルスクリプト

0 件のコメント:

コメントを投稿