Existe um cifrão extra na declaração do caminho local. Tente isto:
containsfilepath () {
local e
for e in "${@:1}"; do [[ "$e" =~ .*".out" ]] && return 0 && local path="abc"; done
return 1
}
Nesse código, como a instrução return 0
é executada antes , a instrução de atribuição path
é atingida, path
nunca recebe um valor atribuído. Se você quiser que o caminho seja atribuído a um valor que possa ser acessado posteriormente, as instruções precisam ser revertidas e o qualificador local
precisa ser removido. tente:
containsfilepath () {
local e
for e in "${@:1}"
do
[[ "$e" =~ .*".out" ]] && { path="abc"; return 0; }
done
return 1
}