Mam następujący skrypt:
#!/bin/bash
function consoleWriteLine() {
echo $* >&2
}
consoleWriteLine " indented by 4 spaces"
Po uruchomieniu otrzymuję następujące dane wyjściowe:
$ ./test.sh
indented by 4 spaces
Gdzie poszły moje 4 miejsca? Jak mogę je odzyskać?
consoleWriteLine
. Po raz drugi toecho
białe znaki muszą zostać zachowane przez dodatkowe cytaty. Nigdy bym nie zgadł, że możesz wstawiać cytaty$*
.$*
, wariant$@
został stworzony specjalnie po to, by rozwinąć się w osobne słowa :"$@"
może być kilka argumentów,"$*"
zawsze jest tylko jeden.echo
jest jednym z niewielu poleceń, w którym nie ma znaczenia.Miałem sam ten problem,
Zgodnie z tym blogiem musisz zmienić IFS, ponieważ domyślnie zawiera on spację, a więc widzi „xxx yyy zzzz” jako 3 ciągi znaków z białą spacją między nimi.
IFS='\n'
przed poleceniem to naprawi i rozłączy IFS, aby usunąć zmianę
unset IFS
źródło