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

sh/bash/dash/ksh/zsh等Shell脚本
回复
surefire
帖子: 19
注册时间: 2007-11-10 8:54

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

#1

帖子 surefire » 2010-01-21 15:53

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

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

#2

帖子 leeaman » 2010-01-21 16:11

那里说16进制是这样写的?
醉了星星,醉月亮●●●●●The Long Way To Go(*^_^*)
surefire
帖子: 19
注册时间: 2007-11-10 8:54

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

#3

帖子 surefire » 2010-01-21 16:20

leeaman 写了:那里说16进制是这样写的?
那请问是怎么写的?
我是在一个教程里看的,如果不是这样写的那是怎么写的呢?
头像
leeaman
帖子: 30702
注册时间: 2007-02-02 18:14
系统: debian sid

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

#4

帖子 leeaman » 2010-01-21 16:22

我无知者无畏了一把~~~,google了一下 :em03

http://www.diybl.com/course/3_program/s ... 59103.html
醉了星星,醉月亮●●●●●The Long Way To Go(*^_^*)
surefire
帖子: 19
注册时间: 2007-11-10 8:54

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

#5

帖子 surefire » 2010-01-21 17:17

呵呵,16进制是这样表示的,只是郁闷得要死,同样一条语句在一个脚本里可以运行,在另外一个脚本里就不能运行了
surefire
帖子: 19
注册时间: 2007-11-10 8:54

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

#6

帖子 surefire » 2010-01-21 17:31

为什么这条语句老是报错:

a=$((16#0f))

错误消息是 arithmetic expression: expecting EOF: "16#0f"
在另外一个脚本里运行又没问题,真郁闷哦
cosechy
帖子: 82
注册时间: 2008-03-06 4:56

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

#7

帖子 cosechy » 2010-01-22 7:48

检查第一行是不是#!/bin/sh
改成#!/bin/bash

这种区别很容易比较出来吧
surefire
帖子: 19
注册时间: 2007-11-10 8:54

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

#8

帖子 surefire » 2010-01-22 13:24

cosechy 写了:检查第一行是不是#!/bin/sh
改成#!/bin/bash

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

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