Я хотел бы выполнить серию команд, которые компилируют мою программу. Но, похоже, это не работает. Это мой сценарийВыполнение команды, хранящейся в переменной
#!/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
И это сработало отлично. Поэтому я совершенно не понимаю, почему мой первый метод не работает.
Ого, спасибо так много, что работал. В чем разница между пространством и пространством? – Quillion
@Quillion, это основной синтаксис оболочки. Команды и аргументы разделяются пробелом, поэтому, когда оболочка видит 'var = value', она ищет команду' var', передавая ей 2 аргумента. Назначение переменной должно быть «var = value». Это больно читаемости, но так оно и есть. –