Почему-то printf "\x2b" так и выводит \x2b
Неужели прийдется case'ом делать?
>Почему-то printf "\x2b" так и выводит \x2bprintf $'\x2b'
>>Почему-то printf "\x2b" так и выводит \x2b
>
>printf $'\x2b'
Извините, но Illegal variable name. говорит....Может кто что скажет-таки?
Неужели никто форму на Sell не обрабатывал?
>>>Почему-то printf "\x2b" так и выводит \x2b
>>
>>printf $'\x2b'
>
>
>Извините, но Illegal variable name. говорит....я так полагаю, у Вас [t]csh.
>>>>Почему-то printf "\x2b" так и выводит \x2b
>>>
>>>printf $'\x2b'
>>
>>
>>Извините, но Illegal variable name. говорит....
>
>я так полагаю, у Вас [t]csh.В скрипте я используй /bin/sh
>>>>>Почему-то printf "\x2b" так и выводит \x2b
>>>>
>>>>printf $'\x2b'
>>>
>>>
>>>Извините, но Illegal variable name. говорит....
>>
>>я так полагаю, у Вас [t]csh.
>
>В скрипте я используй /bin/sh
А ls -l /bin/sh что показывает?
>>>>>>Почему-то printf "\x2b" так и выводит \x2b
>>>>>
>>>>>printf $'\x2b'
>>>>
>>>>
>>>>Извините, но Illegal variable name. говорит....
>>>
>>>я так полагаю, у Вас [t]csh.
>>
>>В скрипте я используй /bin/sh
>А ls -l /bin/sh что показывает?не ссылка, если вы об этом....
>Почему-то printf "\x2b" так и выводит \x2bbash-2.05b$ echo -e '\60\61\62\101\102\103'
012ABCВосмеричная система.
>>Почему-то printf "\x2b" так и выводит \x2b
>
>bash-2.05b$ echo -e '\60\61\62\101\102\103'
>012ABC
>
>Восмеричная система.
а нужна именно 16-тиричная...
Help хоть кто-нибудь
>Help хоть кто-нибудь
Ну не знаю. У меня printf "\x2b\n" выдает +. Может какой-нибудь изврат попробовать типа
echo | awk '{printf ("\x2b\n"); }'
Или перл привлечь или C.
>>>Почему-то printf "\x2b" так и выводит \x2b
>>
>>bash-2.05b$ echo -e '\60\61\62\101\102\103'
>>012ABC
>>
>>Восмеричная система.
>
>
>а нужна именно 16-тиричная...Может можно как и попроще, но я решил в лоб.
str="30;31;32;2b;41;42;43"
str=$(echo -n ${str} | tr [[:lower:]] [[:upper:]])
str=$(echo -n \\; echo "ibase=16; obase=8; ${str}" | bc | tr '\n' '\\' | sed 's/\\$//')
echo -e ${str}
>
>str="30;31;32;2b;41;42;43"
>str=$(echo -n ${str} | tr [[:lower:]] [[:upper:]])
>str=$(echo -n \\; echo "ibase=16; obase=8; ${str}" | bc | tr '\n'
>'\\' | sed 's/\\$//')
>echo -e ${str}Слишком уж мудрено :) Прийдется просто sed'ом заменить...
>Почему-то printf "\x2b" так и выводит \x2bsh-2.05b$ printf "\x2b\n"
+
sh-2.05b$ sh --version
GNU bash, version 2.05b.0(1)-release (i386-pc-linux-gnu)
Copyright (C) 2002 Free Software Foundation, Inc.
>sh-2.05b$ sh --version
>GNU bash,
^^^^^^^^^+++ version 2.05b.0(1)
^^^^^^^^^^^^^^^^^^~ % printf "\x2b\n"
x2b
~ % uname -rs
FreeBSD 5.3-RELEASE
~ %
>>sh-2.05b$ sh --version
>>GNU bash,
>^^^^^^^^^
>
>+++ version 2.05b.0(1)
> ^^^^^^^^^^^^^^^^^^
>
>~ % printf "\x2b\n"
>x2b
>~ % uname -rs
>FreeBSD 5.3-RELEASE
>~ %У bash есть свой встроенный printf и если его (bash) поставить, то должно отобразиться как надо. Кстати в Линукс внешний printf тоже нормально это дело понимает и отображает.
Сменил все символы sed-ом, и не парюсь, ибо время поджимает - а работает нормально.
>>>sh-2.05b$ sh --version
>>>GNU bash,
>>^^^^^^^^^
>>
>>+++ version 2.05b.0(1)
>> ^^^^^^^^^^^^^^^^^^
>>
>>~ % printf "\x2b\n"
>>x2b
>>~ % uname -rs
>>FreeBSD 5.3-RELEASE
>>~ %
>
>У bash есть свой встроенный printf и если его (bash) поставить,ну это я понимаю :) Мне уже просто самому стало интересно.
>Кстати в Линукс внешний printf тоже
>нормально это дело понимает и отображает.не знаю, что там идет с Линуксом.
~ % /usr/bin/printf "\x2b\n"
x2b
~ %все для той же версии FreeBSD :)
/usr/bin/printf --versionprintf (GNU sh-utils) 2.0.11
Автор программы -- David MacKenzie.Copyright (C) 2000 Free Software Foundation, Inc.
Это свободная программа; подробности об условиях распространения
смотрите в исходном тексте. Мы НЕ предоставляем гарантий; даже гарантий
КОММЕРЧЕСКОЙ ПРИГОДНОСТИ или ПРИГОДНОСТИ ДЛЯ КАКОЙ-ЛИБО ЦЕЛИ.А у вас? Тоже интересно стало :)
/usr/bin/printf --version
printf (GNU coreutils) 5.2.1
Written by David MacKenzie.Copyright (C) 2004 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
>/usr/bin/printf --version
>printf (GNU coreutils) 5.2.1
>Written by David MacKenzie.
>
>Copyright (C) 2004 Free Software Foundation, Inc.
>This is free software; see the source for copying conditions. There
>is NO
>warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.Ну у вас судя по всему тоже Линуксовый, причем из последних дистров. Мне вот как оно во Фре интересно :)
>Ну у вас судя по всему тоже Линуксовый, причем из последних дистров.
>Мне вот как оно во Фре интересно :)FreeBSD 4.10
% man printf
...
BUGS
...
ANSI hexadecimal character constants were deliberately not provided.
...
%Может, в этом дело?
printf во фре не GNUтый, а свой (--version не работает :) )
У меня во FreeBSD, если внутренний башевский printf отрабатывает то будет нормальный плюс, если /usr/bin/printf то фигня, наверно по указанной выше причине:
BUGS
...
ANSI hexadecimal character constants were deliberately not provided.
...
В скрипте нужно поставить #!/usr/local/bin/bash и будет номана
>В скрипте нужно поставить #!/usr/local/bin/bash и будет номана#!/usr/bin/env bash
корректнее...
ps: тащить за собой bash из-за банальго "hex-преобразования" :(. ИМХО, решение с sed'ом куда более красивым видится.
>ps: тащить за собой bash из-за банальго "hex-преобразования" :(.
Это точно!>ИМХО, решение с
>sed'ом куда более красивым видится.Да с sed'ом не очень красиво, но униврсально! :)