执行存储在变量中的命令

时间:2011-11-03 13:00:46

标签: bash unix

我想执行一系列编译程序的命令。但它似乎没有奏效。这是我的剧本

#!/bin/bash

task[0] = $(cd vssl/make/; make clean;)
compile[0] = $(make all)
error[0] = $(echo "We failed at vssl install")

task[1] = $(cd ../../web/make/; make clean;)
compile[1] = $(make install)
error[1] = $(echo "We failed at web install")

eval "$task[0]"
if (eval "$compile[0]"); then
    eval "$task[1]"
    if (eval "$compile[1]"); then
        echo "ALL DONE"
    else
        eval "$error[1]"
    fi
else
    eval "$error[0]"
fi

我已经尝试了许多其他方法,我将命令声明替换为例如

task[0] = 'cd vssl/make/; make clean;'

这只是一个错误行,其他行说同样的错误 但每次我得到同样的错误说

./install_everything.sh: line 4: task[0]: command not found

我到底错在了什么? 我试过简单地用实际命令代替像这样的变量

#!/bin/bash

cd vssl/make/
make clean
if(make all); then
    cd ../../web/make/
    make clean
    if(make install); then
        echo "ALL DONE"
    else
        echo "We failed at web install"
    fi
else
    echo "We failed at vssl install"
fi

它完美无缺。所以我很难过为什么我的第一种方法不起作用。

1 个答案:

答案 0 :(得分:3)

删除空格:

task[0] = $(cd vssl/make/; make clean;)
       ^ ^