2014-06-15 8 views

Odpowiedz

19
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ę.

+1

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

+0

@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

+0

Edytuj, aby opisać obsługę nowych linii. –

Powiązane problemy