Скорее всего, вернутся каретки (CR, '\r'
) в конце ваших строк в скрипте оболочки, поэтому переменная пытается быть прочитана в var\r
вместо var
. Вот почему ваше сообщение об ошибке бессмысленно. Аналогичная ошибка должна выглядеть так: :
run.sh: 3: export: [... the variable name]: bad variable name
В вашем случае bash выдает ошибку, потому что var\r
является незаконным для имени переменной из-за возврата каретки, поэтому печатает
test.sh: 3: read: var\r: bad variable name
, но \r
перескакивает в начало строки, перезаписывая начало сообщения об ошибке.
Удаляет каретки, возвращающие концы строк, возможно с помощью утилиты dos2unix
.
Если бы Вы были на SQL-сервере 2005, то Вы могли бы использовать это:
print master.sys.fn_varbintohexstr(@binvalue)
я не думаю, что это существует на 2000, тем не менее, таким образом, Вы могли бы иметь к самокрутке.
DECLARE @binvalue binary(4)
SET @binvalue = 0x61000000
PRINT @binvalue
PRINT cast('a' AS binary(4))
PRINT cast(0x61 AS varchar)
не бросают.
Кастинг преобразовывает двоичный файл для отправки текстовых сообщений значением на соответствующей установке сопоставления для определенной базы данных.
[Начинают Редактирование], Если Вам нужно печатное значение в использовании строковой переменной функция, предложенная Eric Z Борода.
DECLARE @mybin1 binary(16)
DECLARE @s varchar(100)
SET @mybin1 = 0x098F6BCD4621D373CADE4E832627B4F6
SET @s = 'The value of @mybin1 is: ' + sys.fn_varbintohexsubstring(0, @mybin1,1,0)
PRINT @s
, Если эта функция не происходит в Вашем распоряжении из-за серверных версий или потому что ей нужны специальные полномочия, можно создать собственную функцию.
, Чтобы видеть, как та функция была реализована в выпуске Экспресса SQL Server 2005 года, который можно выполнить:
sp_helptext 'fn_varbintohexsubstring'