新手求教一个很基础的shell脚本问题

系统安装、升级讨论
版面规则
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
回复
头像
NewUserFF
帖子: 413
注册时间: 2010-11-19 22:55

新手求教一个很基础的shell脚本问题

#1

帖子 NewUserFF » 2011-02-25 20:43

代码: 全选

#!/bin/bash
declare -i n = 137 
while [${n} < 160]
do
    convert ${n}.jpg -resize 100x100 /home/ubuntu/documents/J*/${n-136}.jpg
    n = n + 1 
done
这是小弟写的第一个shell脚本,目的是想把当前目录下的137.jpg ,138.jpg ,139.jpg ,140.jpg ,141.jpg......159.jpg图片全部用convert的resize命令改成200x200大小,并分别重命名为1.jpg ,2.jpg......
但是目前出了一点错误,小弟刚学shell编程,出了什么笑话请包容一下 :em02 ,请高手麻烦改一下,小弟不知道哪里错了,顺便贴出错误,谢啦!

代码: 全选

./shell.sh: 第 2 行: declare: “=”: 无效的标识符
./shell.sh: 第 2 行: declare: “137”: 无效的标识符
./shell.sh: line 3: 160]: 没有那个文件或目录
头像
sunfish
帖子: 989
注册时间: 2008-05-03 1:53

Re: 新手求教一个很基础的shell脚本问题

#2

帖子 sunfish » 2011-02-25 20:55

NewUserFF 写了:

代码: 全选

#!/bin/bash
declare -i n=137
变量定义“=”左右不能有空格
NewUserFF 写了:

代码: 全选

while [ ${n} \< 160 ]
“<”比较操作符做算术比较时在“(( ))” 使用,在“[ ]”中使用“-lt”
另外“[ ]”前后最好有空格,推荐使用关键字“[[ ]]”
如果非要使用的话需要转义
上次由 sunfish 在 2011-02-25 21:13,总共编辑 5 次。
头像
NewUserFF
帖子: 413
注册时间: 2010-11-19 22:55

Re: 新手求教一个很基础的shell脚本问题

#3

帖子 NewUserFF » 2011-02-25 20:59

sunfish 写了:
NewUserFF 写了:

代码: 全选

#!/bin/bash
declare -i n=137
变量定义“=”左右不能有空格
OK,把空格全部去掉了,现在代码是这样
#!/bin/bash
declare -i n=137
while [${n}<160]
do
convert ${n}.jpg -resize 100x100 /home/cityofsky/documents/J*/${n-136}.jpg
n=n+1
done
还是有问题

代码: 全选

./shell.sh: line 3: 160]: 没有那个文件或目录
不过 160] 并不是一个文件或目录,这句话有什么错误吗?
头像
ebok
帖子: 852
注册时间: 2008-02-15 0:09

Re: 新手求教一个很基础的shell脚本问题

#4

帖子 ebok » 2011-02-25 21:08

代码: 全选

while [ ${n} -lt 160 ]
注意空格。
Somebody think they are full of niubility, so they play a zhuangbility, but only reflect their shability.
头像
NewUserFF
帖子: 413
注册时间: 2010-11-19 22:55

Re: 新手求教一个很基础的shell脚本问题

#5

帖子 NewUserFF » 2011-02-25 23:26

OK啦,谢谢大家! :em03
回复