Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
EN
UJ
Uploaded by
Uehara Junji
2,118 views
Groovy Shell Scripting 2015
Improve Scripting life of Groovy. Using ProcessBuilder#inheritIO() and multi line shebang.
Technology
◦
Read more
0
Save
Share
Embed
Embed presentation
Download
Download to read offline
1
/ 21
2
/ 21
3
/ 21
4
/ 21
5
/ 21
6
/ 21
7
/ 21
8
/ 21
9
/ 21
10
/ 21
11
/ 21
12
/ 21
13
/ 21
14
/ 21
15
/ 21
16
/ 21
17
/ 21
18
/ 21
19
/ 21
20
/ 21
21
/ 21
More Related Content
PDF
Groovy Bootcamp 2015 by JGGUG
by
Uehara Junji
PDF
Java開発の強力な相棒として今すぐ使えるGroovy
by
Yasuharu Nakano
PDF
New features of Groovy 2.0 and 2.1
by
Uehara Junji
PDF
Use JWT access-token on Grails REST API
by
Uehara Junji
PDF
Markup Template Engine introduced Groovy 2.3
by
Uehara Junji
PDF
Introduce Groovy 2.3 trait
by
Uehara Junji
PDF
GroovyServ concept, how to use and outline.
by
Uehara Junji
PDF
groovy 2.1.0 20130118
by
Uehara Junji
Groovy Bootcamp 2015 by JGGUG
by
Uehara Junji
Java開発の強力な相棒として今すぐ使えるGroovy
by
Yasuharu Nakano
New features of Groovy 2.0 and 2.1
by
Uehara Junji
Use JWT access-token on Grails REST API
by
Uehara Junji
Markup Template Engine introduced Groovy 2.3
by
Uehara Junji
Introduce Groovy 2.3 trait
by
Uehara Junji
GroovyServ concept, how to use and outline.
by
Uehara Junji
groovy 2.1.0 20130118
by
Uehara Junji
What's hot
PDF
Indy(Invokedynamic) and Bytecode DSL and Brainf*ck
by
Uehara Junji
PDF
Groovyの紹介20130323
by
Yasuharu Hayami
PPT
第4回勉強会 Groovyの文法からSpockまで
by
Mugen Fujii
PDF
Groovy base gradle_20130309
by
Nobuhiro Sue
KEY
G* Workshop in fukuoka 20120901
by
Uehara Junji
PDF
Gws 20130315 gradle_handson
by
Nobuhiro Sue
PPTX
JJUG CCC 2017 Fall オレオレJVM言語を作ってみる
by
Koichi Sakata
PDF
Read Groovy Compile process(Groovy Benkyoukai 2013)
by
Uehara Junji
PDF
Java SE 9の紹介: モジュール・システムを中心に
by
Taku Miyakawa
KEY
Java One 2012 Tokyo JVM Lang. BOF(Groovy)
by
Uehara Junji
PDF
enterprise grails challenge, 2013 Summer
by
Uehara Junji
PDF
New feature of Groovy2.0 G*Workshop
by
Uehara Junji
PDF
An Internal of LINQ to Objects
by
Yoshifumi Kawai
PDF
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
by
JustSystems Corporation
PDF
キメるClojure
by
Yoshitaka Kawashima
PDF
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方
by
Yoshifumi Kawai
PDF
SignalRブートキャンプ
by
Kouji Matsui
PDF
linq.js - Linq to Objects for JavaScript
by
Yoshifumi Kawai
KEY
JJUG CCC 2012 Real World Groovy/Grails
by
Uehara Junji
Indy(Invokedynamic) and Bytecode DSL and Brainf*ck
by
Uehara Junji
Groovyの紹介20130323
by
Yasuharu Hayami
第4回勉強会 Groovyの文法からSpockまで
by
Mugen Fujii
Groovy base gradle_20130309
by
Nobuhiro Sue
G* Workshop in fukuoka 20120901
by
Uehara Junji
Gws 20130315 gradle_handson
by
Nobuhiro Sue
JJUG CCC 2017 Fall オレオレJVM言語を作ってみる
by
Koichi Sakata
Read Groovy Compile process(Groovy Benkyoukai 2013)
by
Uehara Junji
Java SE 9の紹介: モジュール・システムを中心に
by
Taku Miyakawa
Java One 2012 Tokyo JVM Lang. BOF(Groovy)
by
Uehara Junji
enterprise grails challenge, 2013 Summer
by
Uehara Junji
New feature of Groovy2.0 G*Workshop
by
Uehara Junji
An Internal of LINQ to Objects
by
Yoshifumi Kawai
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
by
JustSystems Corporation
キメるClojure
by
Yoshitaka Kawashima
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方
by
Yoshifumi Kawai
SignalRブートキャンプ
by
Kouji Matsui
linq.js - Linq to Objects for JavaScript
by
Yoshifumi Kawai
JJUG CCC 2012 Real World Groovy/Grails
by
Uehara Junji
Similar to Groovy Shell Scripting 2015
PDF
Hudson using Groovy #jggug
by
kimukou_26 Kimukou
PDF
明日から使えるgradle
by
kimukou_26 Kimukou
PPTX
Groovyスクリプト"再"入門 起動編
by
Yasuharu Hayami
PPTX
Jenkins と groovy
by
Kohsuke Kawaguchi
ODP
こんにちはGroovy
by
irof N
PPT
G*workshop sendai 20100424(v2)
by
Nobuhiro Sue
PDF
Groovy kisobenkyoukai20130309
by
Uehara Junji
PDF
Gws 20120521 gradle
by
Nobuhiro Sue
PDF
ジャパネットQB GPars
by
Takahiro Sugiura
PDF
今日からはじめるGPars
by
fumokmm
PDF
G* Workshop in Fukuoka - Introduction
by
Kazuchika Sekiya
PPTX
Jenkins x Kubernetesが簡単だと思ったら大変だった話
by
Masaki Yamamoto
PPTX
開発を彩る技術たち
by
Oda Shinsuke
PDF
「プログラミングGroovy」入門(公開用)
by
orange clover
PDF
Spring in-summer-gradle-hands on-withanswers
by
Takuma Watabiki
PDF
入門 シェル実装
by
Yusuke Sangenya
PDF
Gradleどうでしょう
by
Takuma Watabiki
PDF
Grailsのススメ(仮)
by
Tsuyoshi Yamamoto
PPT
第5回勉強会
by
Mugen Fujii
PDF
G * magazine 0
by
Tsuyoshi Yamamoto
Hudson using Groovy #jggug
by
kimukou_26 Kimukou
明日から使えるgradle
by
kimukou_26 Kimukou
Groovyスクリプト"再"入門 起動編
by
Yasuharu Hayami
Jenkins と groovy
by
Kohsuke Kawaguchi
こんにちはGroovy
by
irof N
G*workshop sendai 20100424(v2)
by
Nobuhiro Sue
Groovy kisobenkyoukai20130309
by
Uehara Junji
Gws 20120521 gradle
by
Nobuhiro Sue
ジャパネットQB GPars
by
Takahiro Sugiura
今日からはじめるGPars
by
fumokmm
G* Workshop in Fukuoka - Introduction
by
Kazuchika Sekiya
Jenkins x Kubernetesが簡単だと思ったら大変だった話
by
Masaki Yamamoto
開発を彩る技術たち
by
Oda Shinsuke
「プログラミングGroovy」入門(公開用)
by
orange clover
Spring in-summer-gradle-hands on-withanswers
by
Takuma Watabiki
入門 シェル実装
by
Yusuke Sangenya
Gradleどうでしょう
by
Takuma Watabiki
Grailsのススメ(仮)
by
Tsuyoshi Yamamoto
第5回勉強会
by
Mugen Fujii
G * magazine 0
by
Tsuyoshi Yamamoto
More from Uehara Junji
PDF
Shibuya JVM Groovy 20150418
by
Uehara Junji
PDF
Java x Groovy: improve your java development life
by
Uehara Junji
KEY
Groovy 1.8の新機能について
by
Uehara Junji
PDF
Let's go Developer 2011 sendai Let's go Java Developer (Programming Language ...
by
Uehara Junji
KEY
Jggug ws 15th LT 20110224
by
Uehara Junji
PDF
Easy Going Groovy 2nd season on DevLOVE
by
Uehara Junji
PDF
Easy Going Groovy(Groovyを気軽に使いこなそう)
by
Uehara Junji
PDF
Clojure
by
Uehara Junji
PDF
Groovy, Transforming Language
by
Uehara Junji
KEY
Jggug Nagoya 20090925 Groovy
by
Uehara Junji
PDF
Lisp Builder
by
Uehara Junji
PDF
G*WS 3rd Lightning talk
by
Uehara Junji
PDF
Groovy Now And Future
by
Uehara Junji
PDF
Seasar Conference2008 Grails(Final)
by
Uehara Junji
PPT
Groovy Conference2008 Nttsoft
by
Uehara Junji
Shibuya JVM Groovy 20150418
by
Uehara Junji
Java x Groovy: improve your java development life
by
Uehara Junji
Groovy 1.8の新機能について
by
Uehara Junji
Let's go Developer 2011 sendai Let's go Java Developer (Programming Language ...
by
Uehara Junji
Jggug ws 15th LT 20110224
by
Uehara Junji
Easy Going Groovy 2nd season on DevLOVE
by
Uehara Junji
Easy Going Groovy(Groovyを気軽に使いこなそう)
by
Uehara Junji
Clojure
by
Uehara Junji
Groovy, Transforming Language
by
Uehara Junji
Jggug Nagoya 20090925 Groovy
by
Uehara Junji
Lisp Builder
by
Uehara Junji
G*WS 3rd Lightning talk
by
Uehara Junji
Groovy Now And Future
by
Uehara Junji
Seasar Conference2008 Grails(Final)
by
Uehara Junji
Groovy Conference2008 Nttsoft
by
Uehara Junji
Groovy Shell Scripting 2015
1.
Groovy Shell Scripting 2015 JGGUG
G*Workshop 2015/06/26 上原潤二(NTTソフトウェア)
2.
わたくしは 上原潤二(@uehaj) NTTソフトウェア(株)Grails推進室 JGGUG運営委員 書いたり プログラミングGROOVY(技術評論社) Grails徹底入門(翔泳社) ブログ「Grな日々」
3.
Groovyスクリプト使ってますか? Groovyスクリプトとは クラス定義に囲まれていない、トップレベル の文や関数定義から構成 binding変数が使える コンパイルしない
4.
スクリプトは日々作業に便利 編集してすぐ再実行できる コンパイルやIDEやGradleとかは不要 おおげさなインストールも不要(置くだけ) でも…
5.
いくつか問題がある。 プロセスの扱い クラスパス問題
6.
(問題1) プロセスの扱い
7.
プロセス起動の諸問題 "ls -l".execute() 出力は? println("ls -l".execute().text) 標準エラーは どこへ? "ssh
host.example.com ls".execute() パスワードを聞いてき たら何がおきる?
8.
ProcessBuilder#inheritIO() 本日のネタ:これをGroovyらしい 形で有効活用しようではないか
9.
String.metaClass.exec String.metaClass.exec0 = {
def st = new StringTokenizer(delegate) new ProcessBuilder(st.collect()).inheritIO().start() } "login".exec0().waitFor() println "done" waitForはProcessのメソッド
10.
パイプ String.metaClass.or = {
String rhs -‐> delegate.execute() | rhs.execute() } Process.metaClass.or = { String rhs -‐> delegate | rhs.execute() } String.metaClass.or = { Process rhs -‐> delegate.execute() | rhs } "echo 123abc" | "tr 'a-‐z' 'A-‐Z'" | "grep B".exec(input:Redirect.PIPE) 色付きGrepが機能(isatty) https://github.com/uehaj/groovy-shell-scripting-examples
11.
リダイレクト @groovy.transform.BaseScript(cmd.Base1) import java.lang.String
"sed -‐e s/[a-‐z]/A/g".exec(input:"input.txt", output:"output.txt") println new File("input.txt").text println new File("output.txt").text https://github.com/uehaj/groovy-shell-scripting-examples
12.
メソッド追加はいつやるの? staticイニシャライザ 不安 拡張メソッド? Jarに梱包する必要がありスクリプト用として は面倒
13.
@BaseScriptで簡単確実 Since: Groovy 2.2.0 package
cmd import java.util.StringTokenizer import static java.lang.ProcessBuilder.Redirect abstract class Base0 extends Script { abstract Object runScript() Object run(){ String.metaClass.exec = { def st = new StringTokenizer(delegate) new ProcessBuilder(st.collect()).inheritIO().start() } String.metaClass.or = { String rhs -‐> delegate.execute() | rhs.execute() } Process.metaClass.or = { String rhs -‐> delegate | rhs.execute() } String.metaClass.or = { Process rhs -‐> delegate.execute() | rhs } runScript() } } @groovy.transform.BaseScript(cmd.Base0) import java.lang.String "login".exec().waitFor() println "done"
14.
@BaseScriptの有用性 DSLを作るための手軽な仕掛け置き場 methodMissing, getProperty… Groovyスクリプトでは特定の名前の変数を 定義(クロージャ、マップ、…) それに対してBase側で任意の処理
15.
(問題2) クラスパス問題
16.
スクリプトのクラスパス問題(1 of 2) スクリプトを実行可能プログラムのように 起動 そのとき、以下を読めるようにクラスパス を指定したい @BaseSciriptの対象 スクリプトから利用するクラス 問題:
shebangは$0を解釈しない
17.
スクリプトのクラスパス問題(2 of 2) スクリプトの場所($0)相対で読みこんで欲 しい スクリプトごとにCLASSPATH環境変数に追 加したくない😔 すべてを
/.groovy/libにぶちこむのはもっと 嫌😖 Perl, Ruby, Pythonなどではあたりまえの話 Groovyスクリプトを呼び出すShell Script/.bat を書く あきらかな負け 😖
18.
Linux,MacOS 以下のようにすると勝つる 😃 #!/bin/bash //usr/bin/env
groovy -‐cp "`dirname $0`" "$0" $@; exit $? @groovy.transform.BaseScript(cmd.Base1) … ├── thisscript.groovy └── cmd/ └── Base1.groovy
19.
Windows スクリプトはPATHの通ったところに置いた上で「管理 者として実行」したコマンドプロンプトで以下を実行 ただし、 PATH配下をすべて見てしまう 😟 「ダブルクリックしてスクリプト起動」に対応しない assoc .groovy=groovyscript
ftype groovyscript=C:groovy-‐2.4.1bingroovy.bat -‐cp "%PATH%” "%1" %*
20.
まとめ 日々作業はGroovyで片付けよう!! おまけ docopt.java便利
21.
参考リンクなど @BaseScriptアノテーションはscriptをインクルードする のに使えます http://uehaj.hatenablog.com/entry/2014/04/25/ 220853 https://github.com/docopt/docopt.java サンプルコード https://github.com/uehaj/groovy-shell-scripting- examples
Download