A expansão ${parameter/pattern/replacement}
leva o nome de um parâmetro como o primeiro elemento. Portanto, foo=bar; echo "${foo/a/x}"
produziria bxr
. Em
${\$CFILE//\$CFILE/"src/aura/"($(...))}
, \$CFILE
não é um parâmetro válido, portanto, você recebe um erro. Se você quiser executar a substituição no conteúdo de CFILE
, você usaria ${CFILE/...}
.
Observe que na parte "padrão", a barra invertida escapa do cifrão, portanto \$CFILE
procuraria a string literal $CFILE
. Então, novamente, usar ${CFILE/$CFILE/...}
usaria o conteúdo de CFILE
como o texto para a substituição e como o texto a ser usado como padrão. Substituiria todo o conteúdo da variável (*) . Isso seria o mesmo que apenas escrever a parte de substituição sem o parâmetro, então eu não sei exatamente o que você está fazendo aqui.
(* A menos que seja um glob que não corresponda a si mesmo, é claro.)