Перефразируя: я хочу использовать подстановку команд Bash и подстановку строк в одной строке.
Мои настоящие команды длиннее, но нелепое использование эха здесь просто «замена» краткости и действует так же - с теми же ошибками;)
Я знаю, что мы можем использовать команду 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
Это может быть порядок вещей или замена работает только с переменными или жестко закодированными строками. Но я подозреваю, что просто я что-то упускаю, и это возможно.
Как заставить это работать? Почему это не работает?
sed
вместо замены строки:echo "$(echo 'aahahah</ddd>' | sed 's:</ddd>$::')"
. - person pjh   schedule 21.02.2020