我怎样才能用 echo 忽略“\b”和“\e”但不忽略“\n”

我怎样才能用 echo 忽略“\b”和“\e”但不忽略“\n”

首先,对于初学者的问题,我很抱歉,我对 shell 脚本还很陌生。我正在创建一个简单的脚本来管理我的 LaTeX 文档图表。长话短说,我想复制

\begin{figure}
\centering
\inkfig{$name}
\end{figure}

到剪贴板。因此我想到使用这个命令

echo -e "\begin{figure}\n\centering\n\inkfig{$name}\n\end{figure}" | xclip -selection clipboard

但这会将\band解释\e为转义。相反,如果我echo不带-e标志运行,则\n不会解释。所以我需要一种方法来解释\n但不是\band\e

提前致谢!

答案1

一个简单的答案是使用真正的换行符:

echo '\begin{figure}
\centering...' | ...

\n但是如果你在变量中包含字符串,那么你可以使用 bash 将其替换为真正的换行符:

var='\begin{figure}\n\centering...'
newvar="${var//\\n/
}"
echo "$newvar" | ...

寻找模式替换在 bash 手册页中。

相关内容