W wierszu polecenia wykonałem następujące czynności:
$ text="name with space"
$ echo $text
name with space
Próbuję użyć tr -d ' '
do usunięcia spacji i uzyskać wynik:
namewithspace
Próbowałem kilku rzeczy, takich jak:
text=echo $text | tr -d ' '
Jak dotąd brak szczęścia, więc mam nadzieję, że cudowni ludzie mogą pomóc!
shell
command-line
tr
użytkownik3347022
źródło
źródło
W ogóle nie potrzebujesz
echo
polecenia, zamiast tego użyj tutaj Ciąg znaków:Z ciekawości sprawdziłem, ile czasu zajmuje tak trywialne zadanie dla różnych narzędzi. Oto wyniki posortowane od najwolniejszego do najszybszego:
Operacja czystej powłoki jest zdecydowanie najszybsza, co nie jest zaskakujące, ale co naprawdę imponuje, że jest ponad 100 razy szybsza niż najwolniejsze polecenie!
źródło
Po prostu zmodyfikuj zmienną tekstową jak poniżej.
Jeśli jednak mamy znaki kontrolne, może się to zepsuć. Tak więc, zgodnie z sugestią Kasperda, moglibyśmy mieć wokół niego podwójne cudzysłowy. Więc,
będzie lepsza wersja.
źródło
$text
zawiera znaki kontrolne, które zostałyby zinterpretowane przez powłokę. Lepiej wstaw tam podwójne cudzysłowy:text="$(echo "$text" | tr -d ' ')"
źródło
szczególny przypadek, gdy potrzebujesz zmiennej o numerze:
sh:
ksh:
źródło