Concatenar as variáveis não é o problema, ambas as atribuições a rse
irão concatenar as strings bem. O problema é o mesmo da sua pergunta anterior: operadores especiais como ;
e &&
(e &
e |
e >
e "
etc.) não são interpretados após a expansão da variável.
Ou seja, não há redirecionamento ou condicional aqui, apenas expansão de variável dentro de uma string (uma espécie de concatenação de string). As citações em cmd
não são especiais:
$ cmd1='echo "foo" > bar'
$ cmd2='echo "false"'
$ cmd="$cmd1 || $cmd2"
$ $cmd
"foo" > bar || echo "false"
Você provavelmente deve usar funções, por exemplo,
drt="/var/www/html"
drt_chown() { chown -R www-data:www-data "${drt}/"; }
e depois executá-lo como qualquer comando, com apenas drt_chown
. Observe que isso aplicaria o valor atual da variável drt
.
Melhor ainda, faça a função aceitar um parâmetro:
www_chown() { chown -R www-data:www-data "$1"; }
www_chown /var/www/html
Então, se você quiser, você pode fazer uma função que chama as outras funções.
doitall() {
drt_chown &&
drt_chmod &&
...
}