псевдонимы не обрабатывают аргументы. Определите функцию:
myfunc () {
/dir1/dir2/dir3/dir4/executable "$1" fixed-argv2 fixed-argv3
}
Не следует использовать для этого что-то вроде sed/awk, а вместо этого использовать процессор xml/xslt, например xmlstarlet
.
Создайте xslt-файл с шаблоном, например, и сохраните его в файле transform.xsl:
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="tag">
<xsl:element name="{@name}">
<xsl:attribute name="name">
<xsl:value-of select="@name"/>
</xsl:attribute>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
Затем вы можете применить преобразование к xml документу через xmlstarlet tr transform.xsl input.xml
Делайте, что хотите, но вот:
STR='<tag name="abc"></tag>'
AUX=$(echo $STR | cut -d"\"" -f2)
echo $STR | sed "s/tag/$AUX/g"