W bash mogę powiedzieć:Powłoki ryby - jak interpolować podkomendę?
$ echo "a$(echo b)c"
abc
Jak mogę to zrobić w fish shell?
W bash mogę powiedzieć:Powłoki ryby - jak interpolować podkomendę?
$ echo "a$(echo b)c"
abc
Jak mogę to zrobić w fish shell?
echo a(echo b)c
Jeśli masz cytaty, należy je zamknąć:
echo "a"(echo b)"c"
Jeśli komenda może mieć nowe linie, jak ryby 2.3, trzeba zapisać i przywrócić $ IFS:
set -l IFS
echo "a"(cat ~/file.txt)"c"
set -e IFS
Ostatecznie string
będzie w stanie obsłużyć tę sprawę.
To jakoś przełknie wszystkie znaki nowej linii i nie wydaje się być równoważne. Minimalny przykład: Biorąc pod uwagę 'echo -e" a \ nb "> x', a następnie bash' echo "$ (cat x)" 'robi właściwą rzecz, podczas gdy fish' echo (cat x) 'przekształci nową linię w spację (która będzie odpowiednikiem bash 'echo $ (cat x)' bez cudzysłowów). – Debilski
@ridiculous_fish czy mógłbyś wyjaśnić, jak odtworzyć wynik bash '' $() "'? Testowane z rybami 2.3.0 i nadal otrzymuję wyniki @ Debilskiego. Z góry dziękuję. – berbt
Edytuj, aby opisać obsługę nowych linii. –
'echo a (echo b) c' ... zobacz http://fishshell.com/docs/current/index.html#expand –