bash - 是否可以将 HERE 文档和重定向结合起来写入文件而不在 Bash 中生成过程?
问题描述
是否可以将 HERE 文档和重定向结合起来写入文件而不在 Bash 中生成过程?
标准解决方案涉及cat
命令,它是一个单独的进程,而不是内置命令:
cat >my.cfg <<EOF
user = 'me'
dir = "$PWD"
EOF
echo
可以使用,但涉及引用和重复(这里文档简化了引用!):
echo "user = 'me'" >>my.cfg
echo "dir = "'"'"$PWD"'"' >>my.cfg
还有另一种带有多行引号的回声样式,并且仍然引用使代码有点复杂:
echo "user = 'me'
dir = \"$PWD\"" >my.cfg
我特别在寻找不依赖fork()的解决方案,使用一些 Bash 技巧 + HERE 文档来避免引用问题(引用$
符号除外)......
解决方案
这使用内置的 printf,所以没有分叉或产生进程
printf 'user = %q\ndir = %q\n' 'me' "$PWD" >my.cfg
或者:
printf 'user = %q
dir = %q
' 'me' "$PWD" >my.cfg
推荐阅读
- python-3.x - 如何使用python从docx文件的标题下提取文本
- python - 连接 BERT 和 CNN
- android - Google Analytics(分析)移动应用 - 未找到任何视图
- javascript - 在任务调度程序中运行 JavaScript Puppeteer 代码?
- installation - 安装预装 CUDA 和 cudnn 的 Pytorch GPU
- java - 为什么我的代码不能输出一组作品的所有子集?
- r - 如何在包含部分字符串的数据框中创建列?
- asp.net - 页面刷新时将检查项目数据保存到会话
- python - 我的 CP-SAT 程序(Google OR 工具)不执行 on_solution_callback 函数内的命令
- spring-boot - 另一个应用程序中的 Spring Boot 配置属性为空