2017-10-14 5 views
0

Existe-t-il un moyen d'exécuter la commande java sur REPL (jshell) en tant que commande inline sans la lancer?Comment exécuter la commande java jshell en ligne depuis shell ou windows commandLine

E.g. Perl commande en ligne

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

Je dois lancer jshell pour exécuter une commande:

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

J'ai trouvé question similaire here, mais ce n'est pas solution possible de créer un fichier jsh séparé pour la commande individuelle .

Une autre solution sur un même poste est: echo "1+2"|jshell

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

Aïe sortie

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

J'attends $temp seulement imprimer 000019.

+0

double possible de [Comment exécuter un JShell Fichier?] (Https://stackoverflow.com/questions/46426526/how-to-run-a-jshell-file) – nullpointer

+0

Merci pour votre suggestion. J'ai vérifié le message suggéré, il n'est pas possible de créer un fichier séparé pour la commande individuelle. On peut avoir le nombre de commandes 'n' à exécuter à différents endroits. –

+0

[L'une des réponses] (https://stackoverflow.com/a/46426620/1746118) sur le même message suggère d'utiliser 'echo' et ne nécessite pas le script. Avez-vous essayé cela? * commandes à exécuter à différents endroits. * Que signifie différents endroits ici? – nullpointer

Répondre

1

Par défaut, le mode de retour normal est utilisé dans votre interaction avec JShell et ce mode imprime la sortie de commande, la déclaration, les commandes et l'invite. Lisez Introduction to jshell feedback modes pour plus de détails.

étapes pour obtenir une sortie de commande:

  1. Run jshell en concise mode commentaires pour ignorer les détails de commandement et de la Déclaration, il sera toujours imprimer rapidement et la valeur.

    $ echo 'String.format("%06d", 19)' | jshell --feedback concise 
        jshell> String.format("%06d", 19) 
        $1 ==> "000019" 
    
  2. Filtre 2e rangée de résultat en utilisant sed -

    echo 'String.format("%06d", 19)' | jshell --feedback concise | sed -n '2p' 
    
  3. Extrait seule valeur et exclure d'autres Détails-

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