2011-09-12 5 views
0

これが実際に実行されるかどうか不思議ですが、私はそれをelsesスクリプトの例の後にモデル化しました。私の大きな心配はですシェルスクリプトの質問

  • スクリプト実行時に変数が含まれていますか?
  • case文では、echo/mv/&は正しく動作しますか?

おかげ先

#! /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

スクリプト実行時に変数が含まれていますか?

あなたはどのような変数を参照していますか?

ケースステートメントでは、echo/mv/&のクローズは正しく行われますか?

mvコマンドは、おそらくあなたが望むことをしません。一般的には、ソースとターゲットの両方の引数にワイルドカード(*)をmvと指定することはできません。詳細についてはman mvをご覧ください。ワイルドカードはmvではなくシェルによって拡張されていることに注意してください。 mvコマンド自体は引数のリストしか表示せず、第2引数に*があることを知る方法がありません。

+0

変数はala ./ads.shまたはに含まれています./ads.shをオフにして、私は2番目のワイルドカードが見えなかった、おっと! – ehime