Я пытался найти ошибку в этом тестовом скрипте, но пока не смог. Я не ленивый, обещаю ... просто новичок в Bash, поэтому мне трудно ловить синтаксические ошибки. Буду очень признателен, если кто-нибудь сможет мне помочь.

Вот код Я вызываю сценарий с параметром -disableVenusBld, и он по-прежнему выводит "Начальная сборка", что он не должен делать правильно?

while [ $# -ne 0 ]
do
 arg="$1"
 case "$arg" in
  -disableVenusBld)
   disableVenusBld=true
   ;;
  -disableCopperBld)
   disableCopperBld=true
   ;;
  -disableTest)
   disableTest=true
   ;;
  -disableUpdate)
   disableUpdate=true
   ;;
  *)
   nothing="true"
   ;;
 esac
 shift
done

if [ "$disableVenusBld" != true ]; then
 echo "Starting build"
fi

1 ответ1

3

Я не вижу ничего плохого в вашем скрипте, и он делает то, что вы ожидаете, когда я запускаю его:

$ bash -x 186724.sh
+ '[' 0 -ne 0 ']'
+ '[' '' '!=' true ']'
+ echo 'Starting build'
Starting build
$ bash -x 186724.sh -disableVenusBld
+ '[' 1 -ne 0 ']'
+ arg=-disableVenusBld
+ case "$arg" in
+ disableVenusBld=true
+ shift
+ '[' 0 -ne 0 ']'
+ '[' true '!=' true ']'

Обратите внимание, что я запустил скрипт с помощью bash -x . Это приводит к тому, что все строки, начинающиеся с + будут напечатаны: вы получите след выполнения вашего скрипта. Сделайте то же самое с вашим реальным сценарием, чтобы выяснить, где проблема.

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