Ошибка сценария оболочки: bootstrap.sh:13: = не найден
Я разветвлял https://github.com/mathiasbynens/dotfiles dotfiles и попытался запустить bootstrap.sh, который, очевидно, должен "извлечь последнюю версию и скопировать файлы в вашу домашнюю папку", согласно README.md
Но когда я пытаюсь найти файл bootstrap.sh, возвращается ошибка. "bootstrap.sh:13:= не найден". Линия 13 является doIt
участие в
if [ "$1" == "--force" -o "$1" == "-f" ]; then
doIt;
У кого-нибудь есть идея, где все пошло не так? Заранее спасибо.
#!/usr/bin/env bash
cd "$(dirname "${BASH_SOURCE}")";
git pull origin master;
function doIt() {
rsync --exclude ".git/" --exclude ".DS_Store" --exclude ".osx" \
--exclude "bootstrap.sh" --exclude "README.md" --exclude "LICENSE-MIT.txt" -avh --no-perms . ~;
source ~/.bash_profile;
}
if [ "$1" == "--force" -o "$1" == "-f" ]; then
doIt;
else
read -p "This may overwrite existing files in your home directory. Are you sure? (y/n) " -n 1;
echo "";
if [[ $REPLY =~ ^[Yy]$ ]]; then
doIt;
fi;
fi;
unset doIt;
1 ответ
Кажется, у вашей оболочки проблема с ==
в [
команда. Дело в том, что этот оператор недокументирован для этой старой команды, поэтому возможно, что некоторым оболочкам он не понравится.
Команда должна работать в современном Bash, например, если вы запускаете скрипт так:
bash bootstrap.sh
или так:
./bootstrap.sh
В идеале сценарий не должен использовать неясный синтаксис, например, используйте это вместо:
if [[ $1 == --force || $1 == -f ]]; then