Mam skrypt powłoki, który pobiera dane z innego skryptu powłoki. Strumień zostanie przesłany na stdin.
Muszę przechwycić wszystkie bajty strumienia standardowego do pojedynczej zmiennej w skrypcie powłoki. Następnie wykonaj na nim kilka operacji i wyślij go z powrotem na standardowe wyjście.
Mam problem z tym, że czasami w pliku wejściowym pojawia się kończący znak nowego wiersza, ale czasami nie ma. Jeśli nie, to nie chcę dodawać. Jeśli jednak istnieje nowa linia, chcę to zachować.
Problem polega na tym, że bez względu na to, co próbuję, system albo zawsze wyświetla BEZ końcowego znaku nowej linii (jak w przypadku printf
) lub zawsze wyświetla Z nową linią (jak w przypadku echo
).
Proszę mi powiedzieć, jaka jest nazwa procesu (nie echo
lub printf
), który po prostu pobiera zmienną i wysyła ją, dosłownie, bajt na bajt, na standardowe wyjście. Wypróbowałem wszystkie możliwe opcje dla printf
i żaden z nich nie działa, aby zachować końcowe znaki nowej linii.
Dzięki.
Odpowiedzi:
echo -e "$ var" będzie wyprowadzaj końcowe znaki nowej linii. Może zapomniałeś cytatów? Zawsze pokazuj, co próbowałeś, zadając takie pytania.
źródło
Ostateczne rozwiązanie, którego użyłem w moim kodzie, jest następujące:
źródło