亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
12下一頁(yè)
最近訪問(wèn)板塊 發(fā)新帖
查看: 5877 | 回復(fù): 17
打印 上一主題 下一主題

[系統(tǒng)管理] shell 循環(huán)命令+變量的問(wèn)題 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2014-03-11 23:41 |只看該作者 |倒序?yàn)g覽
本帖最后由 p0w3r 于 2014-03-12 21:06 編輯


03/12 更新

  1. IP=$(ifconfig eth0.2 | grep 'inet addr:' | grep Bcast | awk '{print $2}' | awk -F: '{print $2}')
  2. mentps=$(ps | grep mentohust | grep -v grep | awk '{print $1}')

  3. if [ $IP ] && [ -n "$mentps" ] ; then
  4.   ping -c 2 10.21.110.254                            #> /dev/null
  5.   RET=$?                                                   #&& echo $RET && sleep 2
  6.    
  7.   while [ $RET -eq 1 ]
  8.   do
  9.     echo "Running mentohust" && mentohust -k && mentohust && sleep 2
  10.     ping -c 2 10.21.110.254 > /dev/null
  11.     RET=$?
  12.         done
  13.         else                                                                                                           # [ $RET = 0 ] ; then
  14.         echo " Mentohust Run !  "
  15. fi     
復(fù)制代碼
上面這個(gè)代碼我看不出問(wèn)題了. 各位大俠指點(diǎn)一下.

我的用途是 如果網(wǎng)卡有獲取IP , 然后沒(méi)有mentohust這個(gè)進(jìn)程的話就執(zhí)行下面的命令 (貌似說(shuō)廢話了)

之后通過(guò)ping 看網(wǎng)卡是否ping通 , 如果不通就獲取$? 的值 ,如果是 "1 " 就執(zhí)行循環(huán) .
然后 如果 $? 的值是 " 0 " 的話說(shuō)明已經(jīng)通了 就結(jié)束.



現(xiàn)在問(wèn)題是 運(yùn)行了腳本之后,  沒(méi)信息返回 .




===========================分割===================================
  1. ret=$?
  2. if [ $IP ] && [ -n $mentps ] ; then
  3.   ping -c 2 10.21.110.254 > /dev/null
  4.   until (($ret))
  5.   do
  6.     [ $ret -eq 0 ] && (mentohust -k) && mentohust
  7.     ping -c 2 10.21.110.254 > /dev/null
  8.         done
  9.   else
  10.   echo " Not getting an IP via DHCP ! "
  11. fi

  12. WebTEST=$(curl -s baidu.com | grep "219.136.125.139")

  13. if [ -n $WebTEST ] ; then
  14.     WebAuth
  15.    
  16.     fi
復(fù)制代碼
我是打算通過(guò) ping 是否成功所輸出的 $? 來(lái)判斷是否同問(wèn)是暢通的. 如果ping 不通會(huì)返回 1  .然后循環(huán). 但是貌似 until 后面跟的 變量貌似不行 .一直都在循環(huán)

論壇徽章:
0
2 [報(bào)告]
發(fā)表于 2014-03-12 06:04 |只看該作者
回復(fù) 1# p0w3r
ret的定義太早了,ret=$?至少放在ping下面
   

論壇徽章:
2
水瓶座
日期:2014-02-28 14:20:09辰龍
日期:2014-06-16 13:18:51
3 [報(bào)告]
發(fā)表于 2014-03-12 09:31 |只看該作者
每次ping完之后都需要重新給ret賦值

論壇徽章:
0
4 [報(bào)告]
發(fā)表于 2014-03-12 10:54 |只看該作者
回復(fù) 2# runintostar


    原來(lái)這樣.  那么. 我 until 后面跟的這個(gè)條件測(cè)試可行么?

論壇徽章:
0
5 [報(bào)告]
發(fā)表于 2014-03-12 11:05 |只看該作者
回復(fù) 4# p0w3r

你要根據(jù)三樓說(shuō)的改,每個(gè)ping之后都要保存$?的值
  1. ret=$?
  2. if [ $IP ] && [ -n $mentps ] ; then
  3.   ping -c 2 10.21.110.254 > /dev/null
  4.   ret=$?##added
  5.   until (($ret))
  6.   do
  7.     [ $ret -eq 0 ] && (mentohust -k) && mentohust
  8.     ping -c 2 10.21.110.254 > /dev/null
  9.         ret=$?
  10.         done
  11.   else
  12.   echo " Not getting an IP via DHCP ! "
  13. fi

  14. WebTEST=$(curl -s baidu.com | grep "219.136.125.139")

  15. if [ -n $WebTEST ] ; then
  16.     WebAuth
  17.    
  18.     fi
復(fù)制代碼

論壇徽章:
0
6 [報(bào)告]
發(fā)表于 2014-03-12 11:38 |只看該作者
回復(fù) 5# runintostar


    用了這個(gè)代碼. 發(fā)現(xiàn) 在一開(kāi)始賦值給RET了. RET已經(jīng)是0 了但是until 循環(huán)還是會(huì)執(zhí)行下去的

論壇徽章:
0
7 [報(bào)告]
發(fā)表于 2014-03-12 11:54 |只看該作者
本帖最后由 runintostar 于 2014-03-12 12:05 編輯

回復(fù) 6# p0w3r

until之前有ping的啊,所以一開(kāi)始賦的值就沒(méi)了。
另外剛才我注釋的時(shí)候#連上$?了,會(huì)報(bào)錯(cuò),你把注釋去掉
   
另外一般不用(())這個(gè)判斷,剛才試了下
until(($ret))這個(gè)當(dāng)$ret=0的時(shí)候會(huì)認(rèn)為判斷失敗,就進(jìn)去循環(huán),當(dāng)$ret=1的時(shí)候才成功

寫(xiě)shell寫(xiě)到現(xiàn)在,還是那幾點(diǎn),希望自己的代碼通用性強(qiáng)。
取命令結(jié)果盡量用``, 別用$()
expression判斷盡量用[], 別用[[]]和(())

論壇徽章:
0
8 [報(bào)告]
發(fā)表于 2014-03-12 12:06 |只看該作者
回復(fù) 7# runintostar


    這個(gè)#號(hào)后面的我已經(jīng)去掉了的.
    但是現(xiàn)在問(wèn)題就是 ret=0的時(shí)候他就進(jìn)去循環(huán)了. until 這個(gè)不是 判斷1 才進(jìn)入循環(huán) .0 就不執(zhí)行循環(huán)的么?
還有你說(shuō)的 不用 (()) 做判斷哪應(yīng)該用什么做判斷

論壇徽章:
0
9 [報(bào)告]
發(fā)表于 2014-03-12 12:13 |只看該作者
回復(fù) 8# p0w3r

(($ret))這個(gè)是在$ret=1的時(shí)候?yàn)檎娴模闶窍胱?ret=0的時(shí)候?yàn)檎妗?br />
你希望$ret=0就不循環(huán)$ret=1就進(jìn)入循環(huán),就直接寫(xiě)成下面這樣
  1. until [ $ret -eq 0 ]
  2. do
  3. done
復(fù)制代碼

論壇徽章:
0
10 [報(bào)告]
發(fā)表于 2014-03-12 12:37 |只看該作者
回復(fù) 9# runintostar


    嗯. 我試試. 之前是打算用while 循環(huán)的. 但是看了一下while 是返回  0 嘚話就執(zhí)行 .而until 是相反.
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP