bash - Bash:如何存储在变量中显示带有 \n 的变量的命令
问题描述
描述问题的最简单方法是演示它。
目标是存储一个命令,该命令在执行时会正确显示变量 CONTENT 的内容,包括换行符。
如果我们要添加-x
到 中#!
,很明显在执行\n
期间的插值过程中会被吞下,$display_cmd
即使它似乎被正确分配。这反过来意味着使用printf
而不是echo
具有相同的结果。
我有一个使用 cat 和 HERE doc 的解决方法,但我强烈不希望使用它。原因是使用 HERE doc 时,EOF 标记需要从第一列开始,在某些时候,有人会决定与打破解决方法的其余代码保持一致。
这里有一种方法可以在不使用 HERE 文档的情况下完成我想要的事情吗?
#!/bin/bash
CONTENT=$(cat << EOF
Untrusted first line
Untrusted second line
EOF
)
# This will work
echo "CONTENT variable will print on two different lines"
echo
echo -e "$CONTENT"
# This won't work
# Create a command
echo "And this will display content on a single line:"
echo
display_cmd="echo -e \"${CONTENT}\""
$display_cmd
解决方案
推荐阅读
- tensorflow - 如何将灰度图像输入预训练的神经网络模型?
- javascript - e.preventDefault 在带有 Vue JS 的 Axios 中不起作用
- django - 移动到撰写后,Django 无法提供文件
- node.js - DB.collection 不是 firebase 中的功能?
- computer-vision - 如何将目标检测与人员识别结合起来?
- jsp - 如何重用带有html插入的jsp文件?
- pandas - 删除循环遍历 numpy 数组的要求
- ios - 如何将 obj-c NSDictionary 传递给 dart
- sql - 从 jsonb 获取最后一个元素 - PostgreSQL
- java - C# 字典中 Java Map 的“computeIfAbsent”的等价物是什么?