Qual é a maneira correta de usar uma variável com espaços em parte de um comando shell script? [duplicado]

0

Como posso incluir espaços como parte de uma variável usada em um comando svn para script bash do RHEL? Ou se houver algo errado com o seguinte, por favor avise.

A variável de URL do SVN não tem espaços e esta seção está funcionando:

svn checkout $svnUrl $checkoutDir --username $username --password $password --non-interactive --depth immediates --no-auth-cache

Mas o comando de atualização do SVN que funciona quando codificado não está funcionando como uma variável:

updateSubProject="&& svn update --set-depth infinity --no-auth-cache --username $username --password $password --non-interactive"
cd project-dir $updateSubProject
cd ../another-project $updateSubProject
    
por dev_feed 07.06.2016 / 14:30

2 respostas

6

Melhor seria fazer uma função para fazer como

updateSubProject() {
    pushd "$1"
    svn checkout "$svnUrl" "$checkoutDir" --username "$username" --password "$password" --non-interactive --depth immediates --no-auth-cache
    popd
}

updateSubProject project-dir
updateSubProject path/to/another-project

Dessa forma, você não está tentando armazenar código em uma variável e evita muitos problemas de divisão de palavras.

    
por 07.06.2016 / 14:37
1

Você pode tentar executar o comando armazenado na variável com % eval "$updateSubProject"
então remova o duplo & de varable e vá para:
cd project-dir && eval "$updateSubProject"

    
por 07.06.2016 / 14:39