Передача аргумента, содержащего пробел, в скрипте оболочки

Мне нужен мой скрипт, чтобы можно было принимать аргументы с пробелами. Если, например, у меня есть скрипт следующим образом:

for SOME_VAR in [email protected]
do
    echo "$SOME_VAR"
    cd "$SOME_VAR"
done;

Если я foo.sh аргументы скрипту (при условии, что он называется foo.sh)

sh foo.sh "Hello world"

Я ожидаю, что скрипт напечатает Hello world и изменит каталог на Hello world. Но я получаю это сообщение об ошибке:

hello
cd: 5: can't cd to hello
world
cd: 5: can't cd to world

Как именно передать аргумент с пробелом команде в сценарии оболочки?

Ответ 1

Вы также должны обернуть [email protected] в кавычки: "[email protected]"

Это говорит оболочке игнорировать пробелы в аргументах; он не превращает все аргументы в очень длинную строку.