2011-09-12 158 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