シェルスクリプト内でURLのパースをしたかったんですが、さすがにシェルの機能だけでやるのが辛かったのでRubyでやろうかと思ったんですが、ワンライナーで書くのも辛いけど別ファイルに切り出すまでも無いって感じの内容だったので、悩んだ結果ヒアドキュメントを使って無理やりbashの中にねじ込みました。
#!/bin/sh URL="http://kamatama41:pass@example.com:8080/hoge" script=$( cat <<EOS require 'json' require 'uri' uri = URI.parse("$URL") puts JSON.generate({ host: uri.host, port: uri.port, path: uri.path, username: uri.userinfo.split(/:/)[0], password: uri.userinfo.split(/:/)[1] }) EOS ) # {"host":"example.com","port":8080,"path":"/hoge","username":"kamatama41","password":"pass"} echo `ruby -e "$script"`