Есть такой скриптик.
Изначально он должен был состоять из одной строки (3-я снизу), но
это все работало до тех пор пока в имени файла не появились пробелы.Программка $0.bin
#/opt/custom/lib/ld-linux.so.2 $0.bin -path /home/user/Soft Tools 2009.binпринимает пробелы в строке как сепараторы и все что между пробелами считает отдельными самостоятельными путями.
Если сделать так
#/opt/custom/lib/ld-linux.so.2 $0.bin -path /home/user/Soft\ Tools\ 2009.binстрока читается правильно и все работает. Но...
Скриптик делает следующее: Он ищет пробелы и перед каждым вставляет "\".
Казалось бы счастье. Если строку пробелами вбить руками - то все работает, но
если давить на таб и заставить баш, например, дополнять строку, то "\" вставляются автоматически, но в переменную $* не попадают.
И потом нет никакой возможности явно их туда прописать.
Я уже моск сломал.Надо: чтобы в переменной ${new_line} в третьей снизу строке были эти дурацкие символы.
========================================================
#!/bin/shnew_line=
while [ "$1" != "" ];
do
tmp_var=$1if [ "${tmp_var:0:1}" != "-" ]; then
if [ "${new_line}" == "" ]; then
echo "Error"
exit; # --- error
fi;
new_line="${new_line}\\ $1";
else
new_line="${new_line} $1";
fi;
echo "${new_line}"
shift;
done;echo new line is "${new_line}"
/opt/custom/lib/ld-linux.so.2 $0.bin ${new_line}
#/opt/custom/lib/ld-linux.so.2 $0.bin -path /home/user/Soft Tools 2009.bin
#/opt/custom/lib/ld-linux.so.2 $0.bin -path /home/user/Soft\ Tools\ 2009.bin
=================================================
>Надо: чтобы в переменной ${new_line} в третьей снизу строке были эти дурацкие
>символы.
>/opt/custom/lib/ld-linux.so.2 $0.bin ${new_line}/opt/custom/lib/ld-linux.so.2 $0.bin "${new_line}"
>>Надо: чтобы в переменной ${new_line} в третьей снизу строке были эти дурацкие
>>символы.
>>/opt/custom/lib/ld-linux.so.2 $0.bin ${new_line}
>
>/opt/custom/lib/ld-linux.so.2 $0.bin "${new_line}"мимо :(((
пробовал.
четвертая снизу строка: в эхе симфолы не выводятся :\
>мимо :(((
>пробовал.
>четвертая снизу строка: в эхе симфолы не выводятся :\Ну эт-тогда Вам программист нужен. :/
а так не устроит:
echo new line is \"${new_line}\"
??
>вставляются автоматически, но в переменную $* не попадают.Почитай ман к шеллу на предмет различий между "$*" и "$@".
И ещё: прочитай man getopts, чтобы не изобретать велосипед при разборе параметров командной строки.