
Eu tenho isso no meu script. Mas está retornando um erro. Se eu executar o comando no console funciona bem
./script.sh[16]: mv: not found [No such file or directory]
Quero mover alguns arquivos que iniciam no T353 de uma pasta para outra.REMOTE_PATHé /tmp/ eCAMINHOé meu diretório de trabalho
cd $REMOTE_PATH
mv T353* $PATH #this is the line 16
Se eu make mv /tmp/T353* .
funcionar bem.
Responder1
Você parece estar usando a variável PATH
em seu script. Esta é a variável que o shell usa para procurar executáveis. Isso significa que se você alterá-lo para algo que não seja uma :
lista de caminhos delimitada por -, ou para um caminho que não contenha os executáveis que o script usa, o shell poderá não encontrar mais coisas como mv
ou outros utilitários padrão.
É preferível usar letras minúsculas em variáveis de script de shell por esse motivo (é uma questão de gosto 1 ), ou pelo menos estar ciente de que existem variáveis que o shell usa para várias coisas, e que você deve evitar modificá-las, a menos que, claro, você gostaria de alterar o comportamento do shell.
As variáveis que o Bash usa estão listadas sob o título "Variáveis do Shell" no manual do Bash.
Aliás, na cd
linha acimafaztrabalhar. É porque é um utilitário especial integrado ao próprio shell. O shell, portanto, não precisa olhar $PATH
para descobrir onde está.
Aliás, você diz que esse $PATH
é o seu diretório de trabalho. O shell já armazena o diretório de trabalho atual em $PWD
.
Como observação lateral, crie o hábito de colocar aspas duplas em suas variáveis. Ver "Implicações de segurança de esquecer de citar uma variável em shells bash/POSIX".
1 Bem, principalmente, mas o padrão POSIXreserva o namespace de variáveis maiúsculas paravariáveis ambientais(ou seja, variáveis de shell exportadas) usadas pelo shell e pela coleção de utilitários padrão. AFAIK, nãoproibiro uso de caracteres maiúsculos emvariáveis de shell não exportadas, mas todo o propósito de definir namespaces é evitar conflitos. Como, para um script, variáveis de ambiente e variáveis de shell têm a mesma semântica, é melhor evitar completamente variáveis em maiúsculas.