2016-09-22 6 views
0

私はスクリプト "proc backup"を持っています。私は各ディレクトリに許可するか許可しないかという言葉をたくさん持っています。 私は配列とintegradeを考えました。しかし、私は先に進まない...配列は許可されていません

何か簡単ですか?

bind pubm - "*fertig*" backup 

proc backup {nick host handle channel text} { 
    set name[lindex [split [stripcodes bcru $text]] 2] 
    set dir[lindex [split [stripcodes bcru $text]] 4] 

    if {[catch {exec sh backup.sh $dir $name} error]} { 
     putlog $error 
    } 

    putnow "PRIVMSG $channel :backup $name done"; 
} 

array set allowed { 
    "dir1"   "to rar" 
    "dir2"   "backupserver1 " 
    "dir3"   "2016 2017" 
} 

array set not_allowed { 
    "dir1"   "test crap" 
    "dir2"   "old backupserver2 jpg zip" 
    "dir3"   "2015 2014 2013 2012 2011 2010 209 19" 
} 

編集:IRCから

ライン:(LINDEX 2及び4)

名前でこの言葉があるだけ

実行backup.sh

ワード0ワード1 backupserver1ワード3 dir2の

別の単語が

word0 word1 bacの場合はバックアップを実行しない名前にこの言葉が

ワード0ワード1黒ワード3のときのみkupserver55ワード3 dir2の

backup.sh実行しない

ワード0のワード1のテストワード3 DIR1 ワード0ワード1がらくたは

実行backup.shをDIR1 WORD3 dir1

$ nameで許可されたセットの単語があるときにのみ実行します。 $ nameにnot_allowedの単語があるときは実行されません。

+0

あなたは何が起こると思われるかについては何かを書いてください。今、私は 'allowed'と' not_allowed'配列の重要性が本当に何であるか理解していません。 –

+0

例:dir1($ dir)のテキストに($ name) "to"または "rar"(配列セットの許可)が含まれていれば、if {[catch {exec sh backup.sh ....、 dir1($ dir)テキストに($ name) "test"または "crap"(配列セットnot_allowedから)が含まれていれば、停止(return 0)します。と思う –

答えて

0

以下の2行では、変数名と値の間にスペースがありません。

​​

これを試してみてください:

set name [lindex [split [stripcodes bcru $text]] 2] 
set dir [lindex [split [stripcodes bcru $text]] 4] 
+0

はいthx、そのコピーから削除..しかし、それは問題ではありません:) –

0

私は1つの単語、その後の作業PERFEKTを持っているとき、2つのワード

"dir1"   "rar to" 
を持っているとき、私は今、これをテストするために

"dir1"   "rar" 

を作るています

動作しません。単語は「RAR」または言葉であれば、私はテストに$のrelnameからテキストに

bind pubm - "*fertig*" trade 

proc backup {nick host handle channel text} { 

set name [lindex [split [stripcodes bcru $text]] 2] 
set dir [lindex [split [stripcodes bcru $text]] 4] 

set rulesall [rulesallow $dir $release] 

putnow "PRIVMSG $channel :rulesall $rulesall" 
} 


array set allowed { 
"dir1"   "rar" 

} 


proc rulesallow { cat relname} { 
global allowed 
foreach {category allowede} [array get allowed] { 
    if { [string match -nocase "*$allowede*" "$relname"] } { 
    return $allowede; 
    } else { 

    } 
} 
} 

である「ために」対応したいと思います

は削除shコマンドを持っています。

ありがとうございます。

関連する問題