分页: 1 / 1

请问Shell中如何表示一个16进制数据?

发表于 : 2010-01-21 15:53
surefire
我在一个脚本中使用了一个16进制数据,是这样定义变量的
typeset -i a=16#0f
b=$((a + 1))
后面使用了一个简单的计算表达式,能运行正常,当我把这个脚本放到/etc/init.d/目录下随系统自启动时结果就不对了,打印发现a变量在参与后面的计算时总是为空,这是为什么啊?

Re: 请问Shell中如何表示一个16进制数据?

发表于 : 2010-01-21 16:11
leeaman
那里说16进制是这样写的?

Re: 请问Shell中如何表示一个16进制数据?

发表于 : 2010-01-21 16:20
surefire
leeaman 写了:那里说16进制是这样写的?
那请问是怎么写的?
我是在一个教程里看的,如果不是这样写的那是怎么写的呢?

Re: 请问Shell中如何表示一个16进制数据?

发表于 : 2010-01-21 16:22
leeaman
我无知者无畏了一把~~~,google了一下 :em03

http://www.diybl.com/course/3_program/s ... 59103.html

Re: 请问Shell中如何表示一个16进制数据?

发表于 : 2010-01-21 17:17
surefire
呵呵,16进制是这样表示的,只是郁闷得要死,同样一条语句在一个脚本里可以运行,在另外一个脚本里就不能运行了

Re: 请问Shell中如何表示一个16进制数据?

发表于 : 2010-01-21 17:31
surefire
为什么这条语句老是报错:

a=$((16#0f))

错误消息是 arithmetic expression: expecting EOF: "16#0f"
在另外一个脚本里运行又没问题,真郁闷哦

Re: 请问Shell中如何表示一个16进制数据?

发表于 : 2010-01-22 7:48
cosechy
检查第一行是不是#!/bin/sh
改成#!/bin/bash

这种区别很容易比较出来吧

Re: 请问Shell中如何表示一个16进制数据?

发表于 : 2010-01-22 13:24
surefire
cosechy 写了:检查第一行是不是#!/bin/sh
改成#!/bin/bash

这种区别很容易比较出来吧
多谢啊!

我脚本里是有这一行,只是没放在第一行,因为这个脚本是放在/etc/init.d/目录下自启动的,开头加了一些### BEGIN INIT INFO这样的标准注释,所以就把#!/bin/bash把放到这些注释后面了,改到第一行就OK了,问题解决。