2017-10-14 20 views
0

REPL(jshell)でjavaコマンドを実行しても、インラインコマンドとして実行する方法はありますか?シェルまたはウィンドウからインラインでjava jshellコマンドを実行する方法commandLine

などです。 Perlのインラインコマンド

$perl -e 'printf("%06d", 19)' 
000019 

私は、任意のコマンドを実行するためにjshellを起動する必要があります。

$jshell 
| Welcome to JShell -- Version 9 
| For an introduction type: /help intro 
jshell> String.format("%06d", 19) 
$1 ==> "000019" 

私は同様の質問hereを見つけたが、それは、個々のコマンドのために別々のjshファイルを作成するために実行可能な解決策ではありません。

同じポストに別の解決策は、次のとおりです。echo "1+2"|jshell

temp=`echo 'String.format("%06d", 19)'|jshell` 
echo $temp 

痛い出力

| Welcome to JShell -- Version 9 | For an introduction type: /help intro jshell> String.format("%06d", 19) $1 ==> "000019" jshell> 

私は$tempのみ印刷000019を期待しています。

+0

が重複する可能性を除外する[JShellを実行する方法ファイル?](https://stackoverflow.com/questions/46426526/how-to-run-a-jshell-file) – nullpointer

+0

提案をありがとう。私は提案された投稿をチェックしましたが、個別のコマンド用に別々のファイルを作成することは現実的ではありません。異なる場所で実行するためにn個のコマンドを持つことができます。 –

+0

同じ投稿の[回答の1つ](https://stackoverflow.com/a/46426620/1746118)では、 'echo'を使用することを提案していますが、スクリプトは必要ありません。それを試しましたか? *異なる場所で実行するコマンド*異なる場所はここで何を意味しますか? – nullpointer

答えて

1

デフォルトではJShellとの対話でnormalフィードバックモードが使用され、このモードではコマンド出力、宣言、コマンド、およびプロンプトが表示されます。詳細はIntroduction to jshell feedback modesをご覧ください。

手順コマンドの出力を得るために:コマンドと宣言詳細をスキップするconciseフィードバックモードで

  1. 実行jshell、それはまだ、プロンプトと値を出力します。 sed使用して結果から

    $ echo 'String.format("%06d", 19)' | jshell --feedback concise 
        jshell> String.format("%06d", 19) 
        $1 ==> "000019" 
    
  2. フィルター2行目 -

    echo 'String.format("%06d", 19)' | jshell --feedback concise | sed -n '2p' 
    
  3. エキスのみ値及びその他の詳細 -

    echo 'String.format("%06d", 19)' | jshell --feedback concise | sed -n '2p' |sed -En 's/[^>]*>(.+)/\1/gp' 
    
関連する問題