O código funciona no Terminal, mas não quando está em um script

1

Eu tenho: This is my zip file.zip no caminho $dec

Se eu copiar manualmente esse código para a janela do terminal, recebo a saída correta.

Mas, se eu pegar o mesmo código exato e colocá-lo em um arquivo .sh e executá-lo com set -x , eu recebo isto:

++ ls ''
ls: cannot access : No such file or directory

Aqui está o código que estou usando ...

#!/bin/bash
set -x
for k in $(ls "$dec"); do
echo $k
if [[ "$k" == "" ]];
then
echo -e "Nothing Here\n"
elif [[ "$k" =~ \.(doc|txt)$ ]];
then
   echo "Document"  
elif [[ "$k" =~ ".zip" ]];
then
    echo -e "ZIP"

    fi
done

Alguém vê por que ele será executado quando eu copiá-lo manualmente, mas não quando eu o executar?

$dec já está definido. Acabei de sair deste roteiro parcial.

~/Scripts/mypath$ echo $dec
/home/adam/Scripts/mypath/archived
    
por BeMy Friend 28.01.2015 / 20:14

1 resposta

3

Se $dec não tiver valor, você está fazendo ls "" . Experimente e você verá a mesma mensagem de erro. Nota ls "" NÃO é o mesmo que ls (sem argumentos). Verifique seu script para ver por que $dec não está definido.

Se, como você diz, $dec for definido antes de executar o script, provavelmente será necessário exportá-lo para que seja conhecido pelos scripts executados.

export dec
./script.sh

Leia isto para obter mais informações sobre export : link

    
por roadmr 28.01.2015 / 20:39