2011-09-12 217 views
0

只是好奇,如果這實際上會運行,我模仿了某人的一個例子後elses腳本。我最擔心的是Shell腳本問題

  • 腳本運行時是否包含變量?
  • 在case語句中,echo/mv/& close會正常工作嗎?

代碼更新

#! /bin/sh 

    #save as ads.sh 
    #run command: chmod +x ads.sh 
    #usage ./ads.sh {on|off} 

#stop framework 
#/etc/init.d/framework stop 

#create backup dir if needed 
mkdir -p /var/local/adunits.bkp 

    #if ads.sh on 
    case "$1" in 
    on) 

     #move, touch, exit 
     echo "Turning Ad support on..." 
     mv /var/local/adunits/* /var/local/adunits.bkp 
     ;; 

    #if ads.sh off 
    off) 

     #remove tmp 
     echo "Ads turned off..." 
     mv /var/local/adunits.bkp/* /var/local/adunits 
     ;; 

    #else 
    *) 

     echo "Usage: ./ads.sh {on|off}" 
     exit 1 
     ;; 

    esac 

#restart framwork 
#/etc/init.d/framework start 

#bye 
exit 0 

提前感謝!

+2

找出它是否會運行的最好方法是運行它。 –

+0

不幸的是我不能我沒有一個設備來運行它從 – ehime

+0

屬於[codereview.stackexchange.com](http://codereview.stackexchange.com) –

回答

0

mv命令看起來可能是狡猾的。從mv手冊頁:

mv [-f | -i | -n] [-v] source target 
mv [-f | -i | -n] [-v] source ... directory 

請注意,最後一個參數應該是目標文件或目錄。

所以像:

mv /src_dir/* /target_dir/* 

可能覆蓋在/target_dir「最後」文件 - 這可能不是你想要的。

mv /src_dir/* /target_dir 

可能是你的意思。

0

腳本運行時是否包含變量?

你指的是什麼變量?

在case語句中,echo/mv/& close會正常工作嗎?

mv命令可能不會做你想要的。在mv的源參數和目標參數中,通常不會有通配符(*)。 man mv欲知更多信息。請記住,通配符是由shell擴展的,而不是由mv; mv命令本身只會看到參數列表,並且無法知道第二個參數中有一個*

+0

變量包括ala ./ads.sh on或./ads.sh關閉,我沒有看到我的第二張通配符,哎呀! – ehime