'linha' comando no unix / linux bash solicitar uma permissão negada infor

1

Recentemente, estou aprendendo como escrever código de script.

Eu escrevi um script:

#!/bin/sh
# while3b.sh
while f='line'
do
        .. process f ..
done < ./myfile

e aqui está myfile

hello
howdy
gday
bonjour
guten tag 
您好!
*

no terminal, eu insiro isto: sh while3b.sh e, em seguida, ele solicitou algumas informações de permissão como esta.

while3b.sh: 4: while3b.sh: ..: Permission denied
while3b.sh: 4: while3b.sh: ..: Permission denied
while3b.sh: 4: while3b.sh: ..: Permission denied
while3b.sh: 4: while3b.sh: ..: Permission denied
while3b.sh: 4: while3b.sh: ..: Permission denied
while3b.sh: 4: while3b.sh: ..: Permission denied
while3b.sh: 4: while3b.sh: ..: Permission denied
while3b.sh: 4: while3b.sh: ..: Permission denied

Eu tentei usar ls -al para verificar rwx de myfile

-rwxrwxrwx 1 shanechiu shanechiu    48 Jan 31 11:38 myfile
-rwxr-xr-x 1 shanechiu shanechiu    61 Jan 31 11:45 while3b.sh

e eu usei su - root para mudar para super usuário, então executei o script while3b.sh novamente, a mesma informação mostrou. Por quê?

Alguém poderia me fazer um favor? Obrigado antecipadamente.

    
por shanechiu 02.02.2018 / 08:46

1 resposta

0

Meu palpite é que é a linha que contém o asterisco (" * ") no seu myfile . Você avalia f de alguma forma e provavelmente tem problemas quando o asterisco é expandido como caractere de correspondência de padrões.

Exemplo:

#!/bin/sh
# while3b.sh
while f='line'
do
        echo $f
done < ./myfile

leva a

$ ./while3b.sh
hello
howdy
gday
bonjour
guten tag
您好!
myfile myfile~ while3b.sh

Como meu diretório contém os três arquivos myfile , myfile~ e while3b.sh . Você deve examinar o código que você abreviou por "process", o que acontece quando $f é alimentado com * .

    
por 02.02.2018 / 08:53