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 '$aCPPFLAGS += -DCFG_TEE_TA_LOG_LEVEL=$(CFG_TEE_TA_LOG_LEVEL)' Makefile


echo "BINARY=${uuid}
TA_ROOT := ." >> Makefile

sed -i '$ainclude $(TA_DEV_KIT_DIR)/mk/ta_dev_kit.mk 
all: $(BINARY).ta 
$(BINARY).ta: $(BINARY).bin
    rm -f $@ 
    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

就是这个意思。
 
原文地址:https://www.cnblogs.com/luolizhi/p/5587398.html