Нужна помощь спеца по bash Предистория - если кому интересно, автоматизирую сборку ffmpeg под айОС. Есть такая конфигурационная строка: Code: --cc=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc --as='gas-preprocessor.pl /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc' --sysroot=/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.1.sdk --enable-cross-compile --target-os=darwin --arch=arm --extra-cflags='-arch armv6' --extra-ldflags='-arch armv6' --cpu=arm1176jzf-s При вызове скрипта конфигурации "вручную", из окна терминала, все прекрасно работает. При попытке вызвать скрипт конфигурации из своего скрипта, кто-то произвольно разбивает параметр --as, видимо, из-за одинарных кавычек. То есть, при попытке вызвать скрипт навроде: Code: #!/bin/bash PARAM="--cc=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc --as='gas-preprocessor.pl /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc' --sysroot=/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.1.sdk --enable-cross-compile --target-os=darwin --arch=arm --extra-cflags='-arch armv6' --extra-ldflags='-arch armv6' --cpu=arm1176jzf-s" ./configure $PARAM я получаю ответ: Code: Unknown option "/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc'". See ./configure --help for available options. Проблему временно обошел таким подходом: Code: echo "./configure $PARAM &> ./configure_output.txt" >./my_configure chmod 'a+x' ./my_configure ./my_configure но хочется добиться именно чтобы работало без создания промежуточного скрипта. Баш стоит такой: Code: $ bash --version GNU bash, version 3.2.48(1)-release (x86_64-apple-darwin10.0) Copyright (C) 2007 Free Software Foundation, Inc. Или это проблема совсем не bash, а скрипта конфигурации, поставляемого вместе с ffmpeg, и излечению не подлежит?
Re: Нужна помощь спеца по bash Пробовал первым делом, не помогло. Сообщение об ошибке просто менялось на Code: Unknown option "/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc"". See ./configure --help for available options. Да, и вместо пробела ставил "\ " - пофигу.
Re: Нужна помощь спеца по bash mcgru, там свыше 3К строк и несколько десятков case Указанная тобой строка не найдена. Сам файлик лежит в архиве сорсов, если не проблема 3 мега скачать: http://ffmpeg.org/releases/ffmpeg-export-snapshot.tar.bz2
Re: Нужна помощь спеца по bash Убери вообще кавычки в PARAM= Code: #!/bin/bash PARAM=--cc=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc --as='gas-preprocessor.pl /Developer/Platforms/iPhoneOS.pla ./configure $PARAM у меня получилось повторить твою ошибку, удалил кавычки все заработало.
Re: Нужна помощь спеца по bash Оно скопировалось криво а показалось что работало. Ошибку пишет один в один как при запуске ручками. (ошибка про компилер)
Re: Нужна помощь спеца по bash Вот (mcgru ищи баги ) Code: ./configure "$PARAM" когда переменная подставляется в строку configure то двойные кавычки изымаются, поэтому надо отдельно взять в двойные кавычки при подстановке.
Re: Нужна помощь спеца по bash Увы, менять ни configure ни makefile нельзя - это не мой продукт. Спасибо за разбор, остановлюсь на совете breedr'a
Re: Нужна помощь спеца по bash Чо-то вы фигню всякую пишете Такой же скрипт как в первом посте, только последняя строчка должна быть: eval ./configure $PARAM
Re: Нужна помощь спеца по bash Спасибо, это я тоже попробовал в первую очередь, еще до того как постить запрос. Результат: Code: /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc --as='gas-preprocessor.pl /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc' --sysroot=/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.1.sdk --enable-cross-compile --target-os=darwin --arch=arm --extra-cflags='-arch armv6' --extra-ldflags='-arch armv6' --cpu=arm1176jzf-s is unable to create an executable file. If /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc --as='gas-preprocessor.pl /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc' --sysroot=/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.1.sdk --enable-cross-compile --target-os=darwin --arch=arm --extra-cflags='-arch armv6' --extra-ldflags='-arch armv6' --cpu=arm1176jzf-s is a cross-compiler, use the --enable-cross-compile option. Only do this if you know what cross compiling means. C compiler test failed. If you think configure made a mistake, make sure you are using the latest version from SVN. If the latest version fails, report the problem to the ffmpeg-user@mplayerhq.hu mailing list or IRC #ffmpeg on irc.freenode.net. Include the log file "config.log" produced by configure as this will help solving the problem.