[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-----
- Re: [shell-script] Re: FTP mv, (continued)
- Re: [shell-script] FTP mv, Renato S. Yamane, 2008/02/09
- Re: [shell-script] FTP mv, patrick, 2008/02/09
- Re: [shell-script] FTP mv, Tiago Barcellos Peczenyj, 2008/02/09
- Re: [shell-script] FTP mv, Renato S. Yamane, 2008/02/09
- Re: [shell-script] FTP mv, patrick, 2008/02/10
- Re: [shell-script] FTP mv, Paulo Roberto Bagatini, 2008/02/11
- Re: [shell-script] FTP mv, patrick, 2008/02/11
- Re: [shell-script] FTP mv [correcao], Paulo Roberto Bagatini, 2008/02/11
- Re: [shell-script] FTP mv [correcao], Tiago Barcellos Peczenyj, 2008/02/11
- Re: Re: [shell-script] FTP mv,
MrBiTS <=