首页 > 解决方案 > 如何从一行中的命令输出字符串中删除已知的最后一部分?

问题描述

换个说法 - 我想在同一行中使用 Bash 命令替换和字符串替换。

我的实际命令更长,但是这里对 echo 的荒谬使用只是简短的“替代”并且行为相同 - 具有相同的错误;)

我知道我们可以使用 Bash 命令来生成它的输出字符串作为另一个命令的参数,如下所示:

echo "$(echo "aahahah</ddd>")"
aahahah</ddd>

我也知道我们可以像这样删除字符串的最后一个已知部分:

var="aahahah</ddd>"; echo "${var%</ddd>}"
aahahah

我正在尝试编写一个命令,其中一个命令给出一个字符串输出,我想删除最后一部分,这是已知的。

echo "${$(echo "aahahah</ddd>")%</ddd>}"
-bash: ${$(echo "aahahah</ddd>")%</ddd>}: bad substitution

这可能是事情发生的顺序,或者替换仅适用于变量或硬编码的字符串。但我怀疑只是我错过了一些东西,这是可能的。

我如何使它工作?为什么它不起作用?

标签: bashstring-substitutioncommand-substitution

解决方案


像这样组合你的命令

var=$(echo "aahahah</ddd>")
echo ${var/'</ddd>'}

推荐阅读