当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 17 篇帖子 ]  前往页数 1, 2  下一页
作者 内容
1 楼 
 文章标题 : 新手求教bash脚本错误:基数值过大
帖子发表于 : 2010-12-15 18:21 
头像

注册: 2010-11-30 11:12
帖子: 10
送出感谢: 0 次
接收感谢: 0 次
写了这样一个简单脚本:
#!/bin/bash
#------------------------------------------
x=078
let y=$x+1
echo "$y" ;结果会报错:let: y=078: 基数值过大 (error token is "078");
因为专业的原因需要用“078”之类的三位数字,请教高手,这是什么原因呢?


_________________
竢实扬华,自强不息!


页首
 用户资料  
 
2 楼 
 文章标题 : Re: 新手求教bash脚本错误:基数值过大
帖子发表于 : 2010-12-15 19:05 
头像

注册: 2010-11-30 11:12
帖子: 10
送出感谢: 0 次
接收感谢: 0 次
我的程序设计需要这样:开始数为078,循环后+1,变成079;我用C#做了下,比如078+1后输出结果为79;有点搞不懂···


_________________
竢实扬华,自强不息!


页首
 用户资料  
 
3 楼 
 文章标题 : Re: 新手求教bash脚本错误:基数值过大
帖子发表于 : 2010-12-15 19:12 

注册: 2006-11-27 14:21
帖子: 49
送出感谢: 0 次
接收感谢: 0 次
很简单啊,bash认为0开头的数字是8进制的,然而8进制只能使用0-7这几个数字,那个078里面有一个8,超过范围了。


_________________
我的百度空间: http://hi.baidu.com/huangyunict/
我的个人主页:http://www.comp.nus.edu.sg/~huangyun/


页首
 用户资料  
 
4 楼 
 文章标题 : Re: 新手求教bash脚本错误:基数值过大
帖子发表于 : 2010-12-15 19:19 

注册: 2006-11-27 14:21
帖子: 49
送出感谢: 0 次
接收感谢: 0 次
如果要去除最开始的0,可以用sed, 代码如下:
代码:
#!/bin/bash

x=078
x=$(echo "$x" | sed "s/^00*//g")
let y=$x+1
echo "$y"


当然了,这样也太难看了,你可以试试这个:

代码:
#!/bin/bash

x=078
let y=10#$x+1
echo "$y"


_________________
我的百度空间: http://hi.baidu.com/huangyunict/
我的个人主页:http://www.comp.nus.edu.sg/~huangyun/


页首
 用户资料  
 
5 楼 
 文章标题 : Re: 新手求教bash脚本错误:基数值过大
帖子发表于 : 2010-12-15 20:34 
头像

注册: 2010-11-30 11:12
帖子: 10
送出感谢: 0 次
接收感谢: 0 次
谢谢三楼的具体回复,确实是bash中8进制的问题;而csh就没有这个问题;你讲的第二种代码很实用非常感谢!


_________________
竢实扬华,自强不息!


页首
 用户资料  
 
6 楼 
 文章标题 : Re: 新手求教bash脚本错误:基数值过大
帖子发表于 : 2010-12-15 21:27 

注册: 2010-12-15 21:13
帖子: 8
送出感谢: 0 次
接收感谢: 0 次
代码:
#!/bin/bash
x=078
y=`expr $x + 1`
echo $y


页首
 用户资料  
 
7 楼 
 文章标题 : Re: 新手求教bash脚本错误:基数值过大
帖子发表于 : 2010-12-16 8:35 
头像

注册: 2010-11-30 11:12
帖子: 10
送出感谢: 0 次
接收感谢: 0 次
谢谢6楼!这样也可以!我想有没有控制格式输出的命令?因为我用到的数字须是三位的,比如001 之类


_________________
竢实扬华,自强不息!


页首
 用户资料  
 
8 楼 
 文章标题 : Re: 新手求教bash脚本错误:基数值过大
帖子发表于 : 2010-12-16 9:17 
头像

注册: 2007-03-24 23:45
帖子: 2357
送出感谢: 0 次
接收感谢: 9
代码:
printf "%03d\n" 1


页首
 用户资料  
 
9 楼 
 文章标题 : Re: 新手求教bash脚本错误:基数值过大
帖子发表于 : 2010-12-17 14:07 
头像

注册: 2009-05-03 21:09
帖子: 39
送出感谢: 0 次
接收感谢: 0 次
不懂楼主的意思,你好要用080么?你要用080的话,
x=078,你这么定义肯定不行。把问题发全给我们大家看看,
目前来看8楼的方法最好


_________________
GONE WITH THE WIND ~~~


页首
 用户资料  
 
10 楼 
 文章标题 : Re: 新手求教bash脚本错误:基数值过大
帖子发表于 : 2010-12-17 19:18 
头像

注册: 2010-11-30 11:12
帖子: 10
送出感谢: 0 次
接收感谢: 0 次
回复9楼:程序比较繁但是类似于这样
min=001
max=004
for((i=min;i<=max;i++))
do
mkdir $i
done

而创建的这个文件夹名格式必须为三位数,比如001,,002等;现在我是这样解决的:
min=001
max=004
let min=10#$min
let max=10#$max
for((i=min;i<=max;i++))
do
if (($i<10))
then
i=00idoy
elif (($i>=10)) && (($i<100))
then
i=0$i
fi
mkdir $i
let i=10#$i
done
比较笨的方法···


_________________
竢实扬华,自强不息!


页首
 用户资料  
 
11 楼 
 文章标题 : Re: 新手求教bash脚本错误:基数值过大
帖子发表于 : 2010-12-17 20:08 

注册: 2006-11-27 14:21
帖子: 49
送出感谢: 0 次
接收感谢: 0 次
那个太复杂了,可以用 seq,比如

代码:
for i in $(seq -w 1 100)
do
   mkdir $i
done


seq还可以用 -f 去控制格式


_________________
我的百度空间: http://hi.baidu.com/huangyunict/
我的个人主页:http://www.comp.nus.edu.sg/~huangyun/


页首
 用户资料  
 
12 楼 
 文章标题 : Re: 新手求教bash脚本错误:基数值过大
帖子发表于 : 2010-12-18 10:00 
头像

注册: 2009-05-03 21:09
帖子: 39
送出感谢: 0 次
接收感谢: 0 次
11楼的方法没试过,我不知道seq命令。。汗一个,
另外结合八楼说的给出脚本
#!/bin/bash
rm temp >& /dev/null
nawk 'BEGIN{min=1;max=55;for (i=min;i<=max;i++){printf ("%03d\n",i)>"temp"}}'
mkdir `cat temp`
rm temp >& /dev/null

这里min,max均为10进制数,自己设定
bash下测试通过


附件:
Screenshot.png
Screenshot.png [ 89.52 KiB | 被浏览 684 次 ]



_________________
GONE WITH THE WIND ~~~
页首
 用户资料  
 
13 楼 
 文章标题 : Re: 新手求教bash脚本错误:基数值过大
帖子发表于 : 2010-12-18 14:45 
头像

注册: 2010-11-30 11:12
帖子: 10
送出感谢: 0 次
接收感谢: 0 次
谢谢6 8 11 12楼的大力帮助!12楼的没怎么看懂···,我最后用的11楼的seq语句,感觉比较方便呵呵


_________________
竢实扬华,自强不息!


页首
 用户资料  
 
14 楼 
 文章标题 : Re: 新手求教bash脚本错误:基数值过大
帖子发表于 : 2010-12-18 14:57 
头像

注册: 2006-10-25 18:08
帖子: 1582
送出感谢: 0 次
接收感谢: 0 次
匪兵甲乙 写道:
谢谢6 8 11 12楼的大力帮助!12楼的没怎么看懂···,我最后用的11楼的seq语句,感觉比较方便呵呵

还有更方便的
代码:
for i in {001..004};do echo $i ;done

001
002
003
004


_________________
楼主真是一派胡言,真可谓:“两个黄鹂鸣翠柳,不知所云;一行白鹭上青天,不知所止“。本来不想和你辩论,今天气愤不过,和你理论一番。我国宪法写得清清楚楚:“一夜夫妻百日恩,七楼以上才有电梯”。这个想必你知道,既然知道,你就不能断章取义,就算是天气预报,它还有不准的时候呢!!!再者说了,那中国银行也不是你一家开的。人家马拉多纳都结婚了,你还拿着粮票顶什么用呢。真是滑天下之大稽。前些日子,全国人大刚刚开过会,郑重声明:“中国不搞多party制,存栏母猪给补贴”。多好的事呢,楞让你这号人给搅混了。


页首
 用户资料  
 
15 楼 
 文章标题 : Re: 新手求教bash脚本错误:基数值过大
帖子发表于 : 2010-12-18 21:39 
头像

注册: 2010-11-30 11:12
帖子: 10
送出感谢: 0 次
接收感谢: 0 次
回复14楼:呵呵 谢谢! 果真更简洁, linux bash编程的确博大精深啊


_________________
竢实扬华,自强不息!


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 17 篇帖子 ]  前往页数 1, 2  下一页

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 2 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译