免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 9664 | 回复: 13
打印 上一主题 下一主题

ash和bash [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-11-06 16:53 |只看该作者 |倒序浏览
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,所以不好意思,以后富了,给大家补上。
菜鸟敬上。

论坛徽章:
0
2 [报告]
发表于 2008-11-06 17:08 |只看该作者
try
cur_major=$((0x$(stat -c %t /dev/lxload 2 > /dev/null)))
``有些shell是不支持的

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
3 [报告]
发表于 2008-11-06 17:14 |只看该作者
好像有ash的数学运算支持16进制的补钉,如果不能升级,就要找个hex2dec的工具,比如 awk bc

论坛徽章:
0
4 [报告]
发表于 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 的話,肯定沒問題...  ^_^

论坛徽章:
0
5 [报告]
发表于 2008-11-06 17:22 |只看该作者
原帖由 merlin852 于 2008-11-6 17:08 发表
try
cur_major=$((0x$(stat -c %t /dev/lxload 2 > /dev/null)))
``有些shell是不支持的


没有起作用,仍然报那个错误

论坛徽章:
0
6 [报告]
发表于 2008-11-06 17:23 |只看该作者

回复 #3 waker 的帖子

但是我使用
#  hex=100
#  echo $((0x$hex))
#  256
是没有问题的,说明我的ash支持16进制的转换

论坛徽章:
0
7 [报告]
发表于 2008-11-06 17:25 |只看该作者
原帖由 smallstar001 于 2008-11-6 17:20 发表


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


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



同意,可以如果使用busybox,用bash2不太可能啊~

论坛徽章:
0
8 [报告]
发表于 2008-11-07 09:39 |只看该作者
昨天我使用了最新的busybox 1.11.2版本,还是没有起作用
是不是除了ash之外还需要其他什么的

论坛徽章:
0
9 [报告]
发表于 2008-11-07 11:12 |只看该作者
ash的十六进制表示还有其他方法吗??
除了0x,高手们帮帮忙吧

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
10 [报告]
发表于 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))

又得到什么结果呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP