示例 test.sh
#!/bin/sh
#追加在shell脚本末尾中的文件可以是可执行文件或者tar压缩包等
file_name="./test.bin"
#使用sed命令把文件内容从shell脚本解析到file_name中,$0是本脚本的名字 $1是传递给本脚本的第一个参数
#sed命令参数说明
# 1,/Alex/ 匹配第一行到有Alex的行
# d 删除指定行
sed "1,/^###END OF THE SCRIPT###/d" "$0" > ${file_name}
#sed解析完之后,对该文件进行其它自定义的操作
chmod u+x ${file_name}
${file_name} && rm -f ${file_name}
exit 0
###END OF THE SCRIPT###
?EFL^B
...
AMIC^@data_start^@__libc_csu_fini^@_sta
-
###END OF THE SCRIPT### 这一行之后的内容是使用 cat file_name >> test.sh 命令追加到脚本中的
-
先写好脚本,再使用 cat file_name >> test.sh 脚本中,不能先把文件追加到脚本,再进行修改,file_name可以是任意的文件
-
sed工作原理:sed工作的过程是先从文件中读取一行内容到模式空间里即sed专属的缓存空间,然后判断这行内容是否是需要处理的内容,如果不是就继续从文件中读取下一行,否则对改行内容进行相应处理后输出,然后继续读取下一行进行判断或处理,直到文件最后一行处理完毕整个过程结束。
-
测试结果
root@arm:~# cat /bin/date >> test.sh
root@arm:~# ./test.sh
Fri Sep 3 13:42:10 CST 2021
root@arm:~#