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.sh
y 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 -al
para rwx
verificarmyfile
-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 - root
cambiar 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 f
de 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 myfile
y . Debe examinar su código, que abrevió como "proceso", qué hace cuando se alimenta con el archivo .myfile~
while3b.sh
$f
*