Bash как инициализировать переменную и вывести ее значение в файл в одну строку - PullRequest
1 голос
/ 25 февраля 2020
PV=$(mvn -q -Dexec.executable="echo" -Dexec.args='${project.version}' exec:exec)
PV >> test.txt

Я бы хотел превратить это в однострочник, чтобы он и инициализировал переменную, и вывел ее значение в test.txt.

Что-то вроде этого, но оно не работает:

PV=$($(mvn -q -Dexec.executable="echo" -Dexec.args='${project.version}' exec:exec)) >> test.txt

Ответы [ 2 ]

3 голосов
/ 25 февраля 2020

Используйте команду tee

PV=$(echo XXX | tee test.txt)

Теперь text.txt содержит XXX , а значение переменной PV равно XXX .
В вашем случае, я думаю, команда должна быть:

PV=$(mvn -q -Dexec.executable="echo" -Dexec.args='${project.version}' exec:exec | tee test.txt)
1 голос
/ 25 февраля 2020

Было бы очень неестественно пытаться делать оба в одной строке. Используйте две строки. Обратите внимание, что PV >> test.txt не работает. Вам нужен echo там:

PV=$(mvn -q -Dexec.executable="echo" -Dexec.args='${project.version}' exec:exec)
echo "$PV" >> test.txt

Если вы действительно хотите сделать это в одну строку, вы можете использовать tee, но я не рекомендую его. Две строки легче читать.

PV=$(mvn -q -Dexec.executable="echo" -Dexec.args='${project.version}' exec:exec | tee -a test.txt)
...