Com base nos seus comentários, eu acho que você pode querer algo assim:
dirs="/dir1 '/path/with spaces/in it' /foo/dir3 '/another/path/with space'"
file="name with spaces maybe"
ssh user@server "find $dirs -maxdepth 1 -name \"$file\""
Eu usei find
em vez de for
e if
. Mente as citações (e barras invertidas), elas são importantes. Podemos escrever com for
etc. mas seria menos elegante. Se você precisar que seja feito dessa maneira, me avise.
Atenção: preste atenção às suas variáveis porque você pode injetar um comando, por exemplo:
file='dummy name" ; rm "very important file" ; echo "'
O principal problema com o seu código foi que ssh
não recebeu nenhum comando para executar no lado remoto. Todas as linhas depois foram tratadas como comandos locais.
Meu código se expande para o seguinte comando a ser executado no lado remoto:
find /dir1 '/path/with spaces/in it' /foo/dir3 '/another/path/with space' -maxdepth 1 -name "name with spaces maybe"
Ele procura arquivos com o nome dado nos diretórios fornecidos (não decrescente para os subdiretórios graças a -maxdepth 1
) e imprime seus caminhos.