定时修改本机ip的脚本

来源:互联网 发布:琉璃神社的备用域名 编辑:程序博客网 时间:2024/06/13 16:13

因为测试需要,要写一个定时修改本机ip的程序,听说用shell编写比较简单明了,所以用shell写了(本人第一次用shell编程)。

#!/bin/bash while truedoip_last=$((($RANDOM%255)+1))echo now ip is: 192.168.1.$ip_lastifconfig eth0 192.168.1.$ip_lastsleep 10sdone
以上是运行通过的脚本代码。


编写过程遇到的问题:

1.一开始,第一行我写成:#!/bin/sh,结果执行时出现:

 arithmetic expression: expecting primary: "(%255)+1"                        (出错大概是因为/bin/sh不支持$RANDOM,而把它当作了普通的变量吧)

第一行的#!,是说明该脚本是在什么shell下面运行的,并且以该shell环境来执行脚本。

我用ls -l命令看了一下它们的属性:


可以看出/bin/sh指向了dash,百度一下它们俩的区别:

原来,Debian和Ubuntu中,/bin/sh默认已经指向dash,这是一个不同于bash的shell,它主要是为了执行脚本而出现,而不是交互,它速度更快,但功能相比bash要少很多,语法严格遵守POSIX标准。

bash(Bourne Again shell)是Bourne shell的扩展,与Bourne shell完全向后兼容,并且在Bourne shell的基础上增加、增强了很多特性。

详情可以看看:Dash与Bash的语法区别


2.括号问题

对于取随机数部分,起初我是写成:

ip_last=$(($RANDOM%255)+1)

执行的时候出现:

Syntax error: Missing '))'

不知道为什么还要加多一层括号。可能这是比较低级的问题,只是我刚学习,还没弄明白吧...


3.睡眠时间

表达方式可以是:

sleep 1      睡眠1秒
sleep 1s    睡眠1秒
sleep 1m   睡眠1分
sleep 1h    睡眠1小时


over.

0 0
原创粉丝点击