Если вы используете System.out.println, вам не понадобится второй сед

ли способ выполнить команду Java на REPL (jshell) как встроенная команда без запуска?

Например. Встроенная команда 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"

Я нашел похожий вопросВот, но не представляется возможным решение создать отдельный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.

 Naman14 окт. 2017 г., 03:20
Возможный дубликатКак запустить файл JShell?
 Rahul Sharma14 окт. 2017 г., 03:35
Спасибо за предложение. Я проверил предложенный пост, не представляется возможным создать отдельный файл для отдельной команды. Можно иметьn количество команд для выполнения в разных местах.
 Rahul Sharma14 окт. 2017 г., 03:48
Я пробовал, но ответ не ожидается. пожалуйста, проверьте сообщение.
 Rahul Sharma14 окт. 2017 г., 03:55
Я пытаюсь назначить только $ temp3 и исключить остальную информацию. Есть ли возможность пропустить jshell для печати информации о версии?
 Naman14 окт. 2017 г., 03:36
Один из ответов в том же посте предлагает использоватьecho и не требует сценария, хотя. Вы пробовали это?команды для выполнения в разных местах. что здесь означают разные места?

Ответы на вопрос(2)

Решение Вопроса

normal Режим обратной связи используется в вашем взаимодействии сJShell и этот режим печатает вывод команды, объявление, команды и приглашение. ЧитатьВведение в режим обратной связи jshell Больше подробностей.

Шаги, чтобы получить вывод команды:

Бегатьjshell вconcise В режиме обратной связи, чтобы пропустить детали команды и объявления, он по-прежнему будет выводить подсказку и значение

 $ echo 'String.format("%06d", 19)' | jshell --feedback concise
   jshell> String.format("%06d", 19)
   $1 ==> "000019"

Отфильтруйте 2-ю строку из результата, используяsed-

echo 'String.format("%06d", 19)' | jshell --feedback concise | sed -n '2p'

Извлекайте только значение и исключайте другие детали.

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

вам не понадобится второй сед

echo "System.out.println(\"$JAVA_HOME\");" | jshell --feedback concise | sed -n '2p'

Ваш ответ на вопрос