Сценарий Bash завершается ошибкой " синтаксическая ошибка в условном выражении"

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

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

  #!/bin/bash
  if [[  = "32"]]
  then
      mv config.h config64.h
      mv config32.h config.h
      mv Makefile Makefile64
      mv Makefile32 Makefile
      echo "READY FOR 32 BITS!"
  elif [[  = "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'

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

3
задан slhck
14.04.2023 16:44 Количество просмотров материала 3061
Распечатать страницу

2 ответа

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

#!/bin/bash
if [[  = "32" ]]
then
  rm config.h
  ln -s config32.h config.h
  rm Makefile
  ln -s Makefile32 Makefile
  echo "READY FOR 32 BITS!"
elif [[  = "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.h config.h
rm Makefile
ln -s Makefile Makefile
echo "READY FOR  BITS!"

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

8
отвечен Floris 2023-04-16 00:32

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

7
отвечен Uwe 2023-04-16 02:49

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх