LinuxForum.Fans
Тема

Аргумент для make в скрипте

Автор: fragment 6 сообщений 2184 просмотров
09.12.2014 15:47 #404406

make в скрипте не может правильно воспринять аргумент -jN. Эпизод:

text

                ...
        echo  -n $(color ltyellow)"Building kernel..."$(color off)
        if nice -n 19 make -j"$threads_num" &>"$log_dir"/build-kernel.log
        then
                ...

С переменной $threads_num всё в порядке - там 8. Но make вылетает с ошибкой:

text
make: the '-j' option requires a positive integer argument
Usage: make [options] [target] ...
Options:
...

Если изменить строку if таким образом:

text
if nice -n 19 make "-j"$threads_num"" &>"$log_dir"/build-kernel.log

то make вылетает с этим:

text
make: *** empty string invalid as file name.  Stop.

Если убрать опцию -jN вообще, то make нормально запускается, но сборка в один поток меня не устраивает. Что ему нужно? У меня такое ощущение, что он путается в типах данных в опции. Как это исправить?

09.12.2014 16:29 #404410

Убрать кавычки у "$threads_num" вообще? Я не знаю, в чем косяк :)

09.12.2014 16:34 #404411
"fragment" написал:
С переменной $threads_num всё в порядке - там 8. Но make вылетает с ошибкой:

проверяй ещё... вероятно, там есть пробел, скорее всего, перед восьмёркой...

09.12.2014 17:29 #404418

Fat-Zer, да, такой вариант заработал:

text
make "-j${threads_num// /}"

Мелочь, а неприятно

09.12.2014 17:34 #404420

Как здесь помечать тему решённой?

09.12.2014 17:57 #404425
"fragment" написал:
make "-j${threads_num// /}"

в качестве занудства:
1. это расширение bash'а...
2. по-хорошему было бы исправить это там, где значение присваивается...

"fragment" написал:
Как здесь помечать тему решённой?

здесь это делается только избранными... сделал...

Войдите или зарегистрируйтесь, чтобы ответить.