Ducttape 0.3:全局变量赋值

时间:2014-07-09 13:49:34

标签: ducttape

我在ducttape 0.3中遇到了一些变量赋值问题。我有一个全局变量块,我喜欢一个变量来引用另一个bash风格。 foo=$bar赋值正常工作,但如果我尝试将字符串与变量引用连接,则忽略引用。

task do_it :: x=$bar f=$f {
    echo $x
    echo $f
}

global {
    foo="foo"
    bar=$foo
    cwd=/usr
    f="$cwd/bin"
}

输出:

foo
$cwd/bin

如果我没有在引号中将赋值包装到变量f,我会得到以下异常:

ducttape tmp.tape 
ducttape 0.3
by Jonathan Clark
ERROR: Illegal character in variable name. Adding a space after the variable name may fix this error.
/path/to/tmp.tape:10
    f=$cwd/bin
      ^

如何进行更聪明的变量分配?

1 个答案:

答案 0 :(得分:0)

外部管道工作区工作流定义中的全局变量和参数的右侧不支持字符串插值(例如“字符串中的$ $”)。

但是,每个任务中的命令性代码块都由bash解释,而bash 支持字符串插值。解决方案是在任务块内移动需要字符串插值的部分:

task do_it :: x=$bar f=$f {
    f2="$f/bin"
    echo $x
    echo $f2
}

global {
    foo="foo"
    bar=$foo
    cwd=/usr
    f=$cwd
}