Chinaunix

标题: ash和bash [打印本页]

作者: bingbuidea    时间: 2008-11-06 16:53
标题: ash和bash
busybox使用ash,执行以下脚本出错:
create_node()
{
... ...
cur_major=$((0x`stat -c %t /dev/lxload 2 > /dev/null`)) #此行有错
... ...
}

错误为:Syntax error: 0x

在bash下,正常通过。
我的ash支持posix 运算,加入了stat command。

恳请高手指点,还有可不可以用其他的方法来替换这条语句,作用不影响就可以。

ps:我的目标板target使用uclibc,和这个应该没有关系吧??!!

我的可用积分只有1,所以不好意思,以后富了,给大家补上。
菜鸟敬上。
作者: merlin852    时间: 2008-11-06 17:08
try
cur_major=$((0x$(stat -c %t /dev/lxload 2 > /dev/null)))
``有些shell是不支持的
作者: waker    时间: 2008-11-06 17:14
好像有ash的数学运算支持16进制的补钉,如果不能升级,就要找个hex2dec的工具,比如 awk bc
作者: smallstar001    时间: 2008-11-06 17:20
原帖由 merlin852 于 2008-11-6 17:08 发表
try
cur_major=$((0x$(stat -c %t /dev/lxload 2 > /dev/null)))
``有些shell是不支持的


不对吧 ``的移植性比$() 要强,十三问:


不過,$( ) 並不是沒有斃端的...
首先,` ` 基本上可用在全部的 unix shell 中使用,若寫成 shell script ,其移植性比較高。
而 $( ) 並不見的每一種 shell 都能使用,我只能跟你說,若你用 bash2 的話,肯定沒問題...  ^_^
作者: bingbuidea    时间: 2008-11-06 17:22
原帖由 merlin852 于 2008-11-6 17:08 发表
try
cur_major=$((0x$(stat -c %t /dev/lxload 2 > /dev/null)))
``有些shell是不支持的


没有起作用,仍然报那个错误
作者: bingbuidea    时间: 2008-11-06 17:23
标题: 回复 #3 waker 的帖子
但是我使用
#  hex=100
#  echo $((0x$hex))
#  256
是没有问题的,说明我的ash支持16进制的转换
作者: bingbuidea    时间: 2008-11-06 17:25
原帖由 smallstar001 于 2008-11-6 17:20 发表


不对吧 ``的移植性比$() 要强,十三问:


不過,$( ) 並不是沒有斃端的...
首先,` ` 基本上可用在全部的 unix shell 中使用,若寫成 shell script ,其移植性比較高。
而 $( ) 並不見的每一種 shell  ...



同意,可以如果使用busybox,用bash2不太可能啊~
作者: bingbuidea    时间: 2008-11-07 09:39
昨天我使用了最新的busybox 1.11.2版本,还是没有起作用
是不是除了ash之外还需要其他什么的
作者: bingbuidea    时间: 2008-11-07 11:12
ash的十六进制表示还有其他方法吗??
除了0x,高手们帮帮忙吧
作者: waker    时间: 2008-11-07 11:22
原帖由 bingbuidea 于 2008-11-6 17:23 发表
但是我使用
#  hex=100
#  echo $((0x$hex))
#  256
是没有问题的,说明我的ash支持16进制的转换


那么
hex=`stat -c %t /dev/lxload 2 > /dev/null`
echo x"$hex"x
echo $((0x$hex))

又得到什么结果呢?
作者: bingbuidea    时间: 2008-11-07 11:56
原帖由 waker 于 2008-11-7 11:22 发表


那么
hex=`stat -c %t /dev/lxload 2 > /dev/null`
echo x"$hex"x
echo $((0x$hex))

又得到什么结果呢?



echo x"$hex"x
output:xx


echo $((0x$hex))
output: -sh: Syntax error: 0x
作者: waker    时间: 2008-11-07 12:08
标题: 回复 #11 bingbuidea 的帖子
stat -c %t /dev/lxload 2 > /dev/null

变成
stat -c %t /dev/lxload 2> /dev/null
作者: prc    时间: 2008-11-07 13:00
TRY

printf "%d" 0x$hex
作者: bingbuidea    时间: 2008-11-14 13:20
原帖由 waker 于 2008-11-7 12:08 发表
stat -c %t /dev/lxload 2 > /dev/null

变成
stat -c %t /dev/lxload 2> /dev/null

不好意思,笔误




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2