定時修改本機ip的腳本

因爲測試需要,要寫一個定時修改本機ip的程序,聽說用shell編寫比較簡單明瞭,所以用shell寫了(本人第一次用shell編程)。

#!/bin/bash 

while true

do

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

echo now ip is: 192.168.1.$ip_last

ifconfig eth0 192.168.1.$ip_last

sleep 10s

done
以上是運行通過的腳本代碼。


編寫過程遇到的問題:

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.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章