O comando `line` no bash unix/linux solicita uma permissão negada informações

O comando `line` no bash unix/linux solicita uma permissão negada informações

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

Eu escrevi um roteiro:

#!/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 inseri isto: sh while3b.she então 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 -alpara rwxverificarmyfile

-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 costumava su - rootmudar para superusuário e executava o script while3b.sh novamente, as mesmas informações eram exibidas. Por que?

Alguém poderia me fazer um favor? Agradeço antecipadamente.

Responder1

Meu palpite é que é a linha que contém o asterisco (" *") no seu arquivo myfile. Você avalia fde alguma forma e provavelmente terá problemas quando o asterisco for expandido como caractere de correspondência de padrão.

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

Porque meu diretório contém os três arquivos myfilee myfile~. while3b.shVocê deve examinar seu código, que foi abreviado como "processar", o que ele faz quando $fé alimentado com o arquivo *.

informação relacionada