2016-09-22 201 views
0

我有脚本“proc备份”。我必须为每个目录许多单词允许或不允许。 我认为这是一个数组的integra。但我没有领先...阵列允许不允许

还是有什么更简单的?

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只有当这个词在名称是

WORD0 WORD1 backupserver1 WORD3 DIR2

当另一个字是

word0 word1 bac kupserver55 WORD3 DIR2

无法运行backup.sh

WORD0字1测试WORD3 DIR1 WORD0字1废话WORD3 DIR1

运行backup.sh只有当这个词中的名字是

WORD0 WORD1黑WORD3 dir1

只有在$ name中允许的字中有一个字时才运行。 当$ name中的not_allowed中的单词是不可运行时。

+0

请再写一些关于你期望发生什么,什么不发生的事情。现在,我不明白'allowed'和'not_allowed'数组的真正含义。 –

+0

例如:当在dir1($ dir)中的文本包括($ name)“to”或“rar”(从允许的数组集合中)然后make if {[catch {exec sh backup.sh ...., dir1($ dir)文本包括($ name)“test”或“crap”(从数组集合not_allowed)然后停止(retourn 0),我希望它更好。问候 –

回答

0

以下2行缺少变量名和值之间的空格。

​​

试试这个:

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

是thx,它从副本删除..但这不是问题:) –

0

我现在做这个测试,当我有一个字当时的工作PERFEKT,

"dir1"   "rar" 

有2个字

"dir1"   "rar to" 

不工作。

我想作出回应。如果字是“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命令删除。

Regards