Альтернативы nfs, которые зависят от имени пользователя / пароля или аутентификации с открытым ключом

Подход Яэгаши будет работать, но придать ему значения «на лету» будет непросто. Команда 'export' выполняется во время анализа Makefile и устанавливает переменную среды оболочки для рецепта. Затем переменная среды оценивается во время выполнения рецепта 'docs'.

Если в вашем сниппете должны быть заполнены какие-либо переменные, зависящие от цели, я бы порекомендовал такой подход:

Быстрый подход

Если вам просто нужно запустить пару однострочников, этот шаблон будет работают довольно хорошо.

run_script = python -c \
"import time ;\
print 'Hello world!' ;\
print '%d + %d = %d' %($1,$2,$1+$2) ;\
print 'Running target \'%s\' at time %s' %('$3', time.ctime())"

test:
    $(call run_script,4,3,$@)

Необычный подход

Если вы хотите использовать странные символы и функции, циклы for или другие многострочные конструкции, вот модный шаблон, который прекрасно подойдет.

#--------------------------- Python Script Runner ----------------------------#

define \n


endef

escape_shellstring = \
$(subst `,\`,\
$(subst ",\",\
$(subst $$,\$$,\
$(subst \,\\,\
$1))))

escape_printf = \
$(subst \,\\,\
$(subst %,%%,\
$1))

create_string = \
$(subst $(\n),\n,\
$(call escape_shellstring,\
$(call escape_printf,\
$1)))

python_script = printf "$(call create_string,$($(1)))" | python

#------------------------------- User Scripts --------------------------------#

define my_script

def good_times():
    print "good times!"

import time
print 'Hello world!'
print '%d + %d = %d' %($2,$3,$2+$3)
print 'Runni`ng $$BEEF \ttarget \t\n\n"%s" at time %s' %('$4', time.ctime())
good_times()

endef

#--------------------------------- Recipes -----------------------------------#

test:
    $(call python_script,my_script,1,2,$@)
2
22.12.2017, 23:24
0 ответов

Теги

Похожие вопросы