El comando `line` en Unix/linux bash solicita un permiso denegado

El comando `line` en Unix/linux bash solicita un permiso denegado

Recientemente, estoy aprendiendo a escribir código de script.

Escribí un guión:

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

y aquí estámyfile

hello
howdy
gday
bonjour
guten tag 
您好!
*

en la terminal, ingresé esto: sh while3b.shy luego me solicitó información de permiso 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

Intenté 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

y solía su - rootcambiar a superusuario, luego ejecuté el script while3b.sh nuevamente, se mostró la misma información. ¿Por qué?

¿Alguien podría hacerme un favor? Gracias de antemano.

Respuesta1

Supongo que es la línea que contiene el asterisco (" *") en su archivo myfile. Lo evalúas fde alguna manera y probablemente tengas problemas cuando el asterisco se expande como carácter de coincidencia de patrones.

Ejemplo:

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

lleva a

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

Debido a que mi directorio contiene los tres archivos myfiley . Debe examinar su código, que abrevió como "proceso", qué hace cuando se alimenta con el archivo .myfile~while3b.sh$f*

información relacionada