Есть такой скриптик.
Изначально он должен был состоять из одной строки (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/sh
new_line=
while [ "$1" != "" ];
do
tmp_var=$1
if [ "${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
=================================================