shell写多行到文件中
用cat或者echo命令输入多行数据到指定文本
#!/bin/sh ( cat <<EOF start() { echo "start" } EOF ) > Makefile
cat Makefile
start()
{
echo "start"
}
为了自动生成一个可以传参的Makefile写了一个变态的shell
#!/bin/sh cd ${ta_path} echo "---生成 Makefile-----" echo "TA_DEV_KIT_DIR := ../../export-user_ta/ CROSS_COMPILE := arm-linux-gnueabihf- CFG_TEE_TA_LOG_LEVEL ?= 2" > Makefile #cd ${ta_path} sed -i '$a\CPPFLAGS += -DCFG_TEE_TA_LOG_LEVEL=$(CFG_TEE_TA_LOG_LEVEL)' Makefile echo "BINARY=${uuid} TA_ROOT := ." >> Makefile sed -i '$a\include $(TA_DEV_KIT_DIR)/mk/ta_dev_kit.mk \nall: $(BINARY).ta \n$(BINARY).ta: $(BINARY).bin\n rm -f $@ \n cat faked_armv7_uta_signed_header.bin $< > $@' Makefile echo "clean: clean_ta_file .PHONY: clean_ta_file clean_ta_file:" >> Makefile sed -i '$a\ rm -f $(BINARY).ta' Makefile echo "----Makefile生成完成----"
交叉使用sed和cat或者echo命令是因为,sed可以将$(BINARY)只要的参数原封不动的写入文件中,但是echo,cat会将其理解为变量。
本身这脚步的主要目的也是为了使Jenkins调用时可以手动传递参数。在
echo "BINARY=${uuid} TA_ROOT := ." >> Makefile
就是这个意思。