Parece que você está tentando fazer uma função do tipo passar por referência .
Estes não são realmente adequados para bash
scripting. Podemos fingir com o comando eval
, mas isso tem muito comportamento de risco (avaliação potencial de comandos incorporados em strings) e, portanto, não é recomendável.
Em este exemplo, o código seria parecido com:
function check_cases {
case $2 in
r) eval $1=\"\$$1 Read\" ;;
w) eval $1=\"\$$1 Write\" ;;
x) eval $1=\"\$$1 Execution\" ;;
esac
}
check_cases var r
check_cases var w
check_cases var x
echo $var
Em vez disso, normalmente é melhor usar a semântica passar por valor ; basta retornar o valor desejado e fazer com que o chamador o acrescente à variável.
por exemplo,
function check_cases {
case $1 in
r) echo " Read" ;;
w) echo " Write" ;;
x) echo " Execution" ;;
esac
}
var="$var$(check_cases r)"
var="$var$(check_cases w)"
var="$var$(check_cases x)"
echo $var