По какой-то причине мне нужен мой скрипт, чтобы иметь возможность принимать аргументы с пробелами. Если, например, у меня есть сценарий, как следует,Передача аргумента, содержащего пространство в сценарии оболочки
for SOME_VAR in [email protected]
do
echo "$SOME_VAR"
cd "$SOME_VAR"
done;
, если передать аргументы скрипта (если он называется foo.sh)
sh foo.sh "Hello world"
Я ожидаю сценарий для печати Привет мир и смените каталог на «Hello world». Но я получаю сообщение об ошибке вместо
hello
cd: 5: can't cd to hello
world
cd: 5: can't cd to world
так как именно я прохожу спор с космическим полукокса в команду в скрипт ?!
XD спасибо за ответ, я хотел был ответить на это сам, какое-то дополнительное объяснение http://tldp.org/LDP/abs/html/internalvariables.html#ARGLIST – Jeffrey04
Но если $ @ - это список, вокруг него будет в основном слить его в одну длинную строку.Это не будет перебирать его правильно? И в этом случае нет реального использования в цикле for, нормальном 'echo '$ @"; cd "$ @ «' будет делать. Есть ли решение, в котором я могу иметь 'for i в' -constructs разграничение строки, но не пробел? –
@AndreasWederbrand: Нет. «$ @» - это специальный токен, который означает «обернуть каждого человека аргумент в кавычках ". Таким образом,' a "bc" становится (или, скорее, остается) '" a "" bc "вместо" abc "или' "a" "b" "c". –