数组允许不允许

时间:2016-09-22 11:14:31

标签: arrays tcl

我有脚本" proc backup"。我必须允许或不允许每个目录中的许多单词。 我以为用数组进行整理。但我没有领先......

还是有更简单的东西?

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 backupserver55 word3 dir2

不运行backup.sh

word0 word1 test word3 dir1 word0 word1 crap word3 dir1

仅当名称中的单词

时才运行backup.sh

word0 word1 black word3 dir1

仅在$ name中允许的集合中的单词时运行。 在$ name中来自not_allowed的单词时不运行。

2 个答案:

答案 0 :(得分:0)

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

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

试试这个:

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

答案 1 :(得分:0)

我现在要对此进行测试,当我有一个单词然后工作时,

"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命令。

此致