2020年5月9日土曜日

juliaのwrapperの意味

https://docs.julialang.org/en/latest/manual/faq/#catch-ctrl-c-1 に出てくる下記のコードの意味がしばらくわからなかったのでメモ。
#!/bin/bash
#=
exec julia --color=yes --startup-file=no -e 'include(popfirst!(ARGS))' \
    "${BASH_SOURCE[0]}" "$@"
=#

@show ARGS  # put any Julia code here
このコードはbashとしてもJuliaとしても解釈できるようになっているのがみそ。

bashで起動すると、2行目はコメントとして無視され、3行目が実行される。execなので、これ以降の行はbashとしては解釈されない。2行目はこのファイル自体を引数としてJuliaを起動している。

Juliaでは'#=' '=#'がマルチラインコメントとして無視されるので、2-5行目はスキップされ、6行目以降が通常のJuliaコードとして解釈されるという仕掛け。 なるほど。

0 件のコメント: