У меня есть функция Bash, которая для удобства переносит команду java
. Команда принимает аргумент, который на самом деле является JSON и может быть несколько большим, поэтому я предпочитаю хранить его в многострочном файле.
Вот упрощенный пример.
Java-программа Test
просто выводит свой последний аргумент командной строки, как есть, с символами новой строки и отступами, как в файле JSON. Это работает:
$ java Test -s test "$(cat test.json)"
{
"id": 123,
"name": "Test"
}
Теперь моя функция Bash выглядит следующим образом:
jwt() { java Test $@; }
Когда я теперь вызываю функцию с подкомандой cat
, переданный аргумент прерывается:
$ jwt -s test "$(cat test.json)"
{
$ jwt -s test "`cat test.json`"
{
Те же командные строки работают в zsh , но я хотел бы узнать, как это сделать с bash .
Другой пример - вместо java
я просто буду использовать echo
.
Это работает:
$ echo "$(cat test.json)"
{
"id": 123,
"name": "Test"
}
Функция Bash:
e() { echo $@; }
Называя это:
$ e "$(cat test.json)"
{ "id": 123, "name": "Test" }
Удивительно, но белое пространство здесь сжимается в единое пространство. Хотите знать, в чем разница с Java.