1

Я новичок в bash-скриптинге, и я просто хочу сделать простую небольшую вещь, но все, что я читаю онлайн, кажется, не работает для меня!

Итак, у меня есть этот скрипт здесь:

  #!/bin/bash
  if [[ $1 = "32"]]
  then
      mv config.h config64.h
      mv config32.h config.h
      mv Makefile Makefile64
      mv Makefile32 Makefile
      echo "READY FOR 32 BITS!"
  elif [[ $2 = "64" ]]
  then
      mv config.h config32.h
      mv config64.h config.h
      mv Makefile Makefile32
      mv Makefile64 Makefile
      echo "READY FOR 64 BITS!"
  fi

и я получаю ошибку:

./switch-bits.sh: line 3: syntax error in conditional expression
./switch-bits.sh: line 4: syntax error near `then'
./switch-bits.sh: line 4: `then'

Так что мои руки подняты в воздух здесь ... что не так?

2 ответа2

8

Чтобы уточнить мой комментарий, я бы предложил изменить ваш сценарий следующим образом:

#!/bin/bash
if [[ $1 = "32" ]]
then
  rm config.h
  ln -s config32.h config.h
  rm Makefile
  ln -s Makefile32 Makefile
  echo "READY FOR 32 BITS!"
elif [[ $1 = "64" ]]
then
  rm config.h
  ln -s config64.h config.h
  rm Makefile
  ln -s Makefile64 Makefile
  echo "READY FOR 64 BITS!"
fi

И короче (?умнее) версия:

#!/bin/bash
rm config.h
ln -s config$1.h config.h
rm Makefile
ln -s Makefile$1 Makefile
echo "READY FOR $1 BITS!"

Обратите внимание - было бы неплохо, если бы вы сделали более короткую версию, включить некоторую проверку ошибок - то есть убедиться, что ввод "32" или "64", а не что-то еще. Я оставлю это на ваше усмотрение ...

7

вам нужно пробел между "32" и ]]

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .