shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Re: [shell-script] FTP mv


From: MrBiTS
Subject: Re: Re: [shell-script] FTP mv
Date: Mon, 11 Feb 2008 07:50:03 -0200
User-agent: Thunderbird 2.0.0.6 (X11/20071022)

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Paulo Roberto Bagatini wrote:
| <div class="moz-text-flowed" style="font-family: -moz-fixed">patrick
| escreveu em 10-02-2008 13:20:
|> Tá agora tenta ele dentro de um  "if" e v se funciona.
|
| Ta meio surreal essa conversa, hehe.
|
| Eu uso unix e faco scripts desde 93. Nunca tive problemas com isso, seja
| no sunos, solaris, freebsd, linux, darwin (macos),...
|
| No maximo, e nao sei se eh o seu problema, acontece isso:
|
| --
| $ ls p*
| p2030001.jpg  p2030025.jpg  p2030050.jpg  p2030077.jpg  p2040102.jpg
| p2040127.jpg  p2050152.jpg  p2050177.jpg  p2050202.avi  p2050227.jpg
| $ ls "p*"
| ls: impossível acessar p*: Arquivo ou diretório não encontrado
| --
|
| Ou seja, tanto ta linha de comando, como dentro de um script, no if,
| case, atribuicao para variavel, o q for, so nao fuinciona qdo o * esta
| entre aspas.
|
| O ~ (~arkanon) eh o mesmo caso. Entao, caso as aspas sejam necessarias,
| deixo esses coringas fora delas:
|
| --
| $ touch "linha 1" "linha 1 ab" "linha 1 ac" "linha 2"
| $ ls -1 linha*
| linha 1
| linha 1 ab
| linha 1 ac
| linha 2
| $ ls -1 "linha 1*"
| ls: impossível acessar linha 1*: Arquivo ou diretório não encontrado
| $ ls -1 "linha 1 a"*
| linha 1
| linha 1 ab
| linha 1 ac

MEIO surreal ?

Se o script em questão fosse enviado, para que víssemos onde está o erro, seria 
bem mais fácil. Isso não é trabalho de escola não ?

O "p*" não vai ser expandido. O * vai ser identificado como um caracter, não 
como um curinga. Dá-se um erro parecido quando fazemos

mrbits@rimmon:~$ find . -name p*
find: paths must precede expression
Usage: find [-H] [-L] [-P] [path...] [expression]

Nesse caso, devemos "proteger" o *, assim:

$ find . -name p\*

ou

$ find . -name "p*"

Agora, nã funcionar dentro de scripts ou dentro de estruturas de controle do 
script me cheira mais a BIPS do que a problemas com
versões ou interpretadores.

Num exemplo tosco, alguns usos de "caracteres curinga"

1) Script
- ------------------
#!/bin/bash

for FILE in $(ls *.txt) ; do
~        NUM=$(echo $FILE | cut -d "." -f 1 | cut -d "_" -f 2)
~        if [ $NUM -gt 9 ] ; then
                mkdir teste2
~                mv arq* teste2
~        fi
done
- ---------------------

2) Conteudo do diretorio teste

mrbits@rimmon:~/teste$ ls -l arq*
- -rw-r--r-- 1 mrbits mrbits   0 2008-02-11 07:41 arq_10.txt
- -rw-r--r-- 1 mrbits mrbits   0 2008-02-11 07:41 arq_1.txt
- -rw-r--r-- 1 mrbits mrbits   0 2008-02-11 07:41 arq_2.txt
- -rw-r--r-- 1 mrbits mrbits   0 2008-02-11 07:41 arq_3.txt
- -rw-r--r-- 1 mrbits mrbits   0 2008-02-11 07:41 arq_4.txt
- -rw-r--r-- 1 mrbits mrbits   0 2008-02-11 07:41 arq_5.txt
- -rw-r--r-- 1 mrbits mrbits   0 2008-02-11 07:41 arq_6.txt
- -rw-r--r-- 1 mrbits mrbits   0 2008-02-11 07:41 arq_7.txt
- -rw-r--r-- 1 mrbits mrbits   0 2008-02-11 07:41 arq_8.txt
- -rw-r--r-- 1 mrbits mrbits   0 2008-02-11 07:41 arq_9.txt


3) Execucao do script com bash -x, para verbosidade

mrbits@rimmon:~/teste$ bash -x d.sh
++ ls arq_10.txt arq_1.txt arq_2.txt arq_3.txt arq_4.txt arq_5.txt arq_6.txt 
arq_7.txt arq_8.txt arq_9.txt
+ for FILE in '$(ls *.txt)'
++ echo arq_10.txt
++ cut -d . -f 1
++ cut -d _ -f 2
+ NUM=10
+ '[' 10 -gt 9 ']'
+ mv arq_10.txt arq_1.txt arq_2.txt arq_3.txt arq_4.txt arq_5.txt arq_6.txt 
arq_7.txt arq_8.txt arq_9.txt teste2

4) Conteúdo do diretório teste2

mrbits@rimmon:~/teste$ ls -l teste2
- -rw-r--r-- 1 mrbits mrbits 0 2008-02-11 07:41 arq_10.txt
- -rw-r--r-- 1 mrbits mrbits 0 2008-02-11 07:41 arq_1.txt
- -rw-r--r-- 1 mrbits mrbits 0 2008-02-11 07:41 arq_2.txt
- -rw-r--r-- 1 mrbits mrbits 0 2008-02-11 07:41 arq_3.txt
- -rw-r--r-- 1 mrbits mrbits 0 2008-02-11 07:41 arq_4.txt
- -rw-r--r-- 1 mrbits mrbits 0 2008-02-11 07:41 arq_5.txt
- -rw-r--r-- 1 mrbits mrbits 0 2008-02-11 07:41 arq_6.txt
- -rw-r--r-- 1 mrbits mrbits 0 2008-02-11 07:41 arq_7.txt
- -rw-r--r-- 1 mrbits mrbits 0 2008-02-11 07:41 arq_8.txt
- -rw-r--r-- 1 mrbits mrbits 0 2008-02-11 07:41 arq_9.txt


Então, funciona em if, em for, dentro e fora de scripts. Funciona até se 
utilizarmos uma chamada system em outras linguagens.


- --

Um abraço

.0. MrBiTs - address@hidden
..0 GnuPG  - 
http://keys.cardboard.net:11371/pks/lookup?op=get&search=0xAC37715A6DD1F186
000 http://www.mrbits.com.br (under construction)

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)

iD8DBQFHsBpLrDdxWm3R8YYRAkThAJ44sgzTcUGuSMlMUxz5Rz3wLljOVgCeJQaH
PUP0LJjczZBXbPeSmJqs1FE=
=GSaY
-----END PGP SIGNATURE-----


reply via email to

[Prev in Thread] Current Thread [Next in Thread]