De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.
Colaboração: Clovis Reis
Data de Publicação: 15 de fevereiro de 2013
Por diversas vezes encontrei problemas ao utilizar um comando "for" onde os argumentos possuiam espaços em branco. Por exemplo:
bash$ for i in `ls *.jpg`; do echo $i; done;
Neste caso, seria de se esperar o seguinte resultado:
foto1.jpg foto2.jpg foto3.jpg
Porém, caso o comando "for" encontre o arquivo chamado "foto das ferias.jpg", obteremos o seguinte resultado:
foto1.jpg foto2.jpg foto3.jpg foto das ferias.jpg
Isso ocorre porque o comando "for" usa como delimitador de campo o espaço em branco. Para solucionar o problema, basta modificar o conteúdo da variável IFS algo mais conveniente, tal como um "\n"
A variável IFS
ou Internal Field Separator é usada para separar argumentos dentro de uma linha quando utilizamos um comando builtin. Seu valor default é um espaço em branco.
Assim, antes de usar o comando "for" ou qualquer outro que se "atrapalhe" com os espaços em branco, basta setar IFS com o valor adequado:
bash$ IFS=$ \n
e usar o comando normalmente
This policy contains information about your privacy. By posting, you are declaring that you understand this policy:
This policy is subject to change at any time and without notice.
These terms and conditions contain rules about posting comments. By submitting a comment, you are declaring that you agree with these rules:
Failure to comply with these rules may result in being banned from submitting further comments.
These terms and conditions are subject to change at any time and without notice.
Comentários