Команда `line` в bash-оболочке unix/linux выдает сообщение об отказе в доступе

Команда `line` в bash-оболочке unix/linux выдает сообщение об отказе в доступе

Недавно я научился писать скриптовый код.

Я написал сценарий:

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

и вотmyfile

hello
howdy
gday
bonjour
guten tag 
您好!
*

в терминале я ввел это: sh while3b.shи затем он запросил некоторую информацию о разрешениях, например такую.

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

Я пытался использовать ls -alдля rwxпроверкиmyfile

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

и я использовал su - rootпереход на суперпользователя, затем снова выполнил скрипт while3b.sh, та же информация высветилась. Почему?

Может ли кто-нибудь оказать мне услугу? Спасибо заранее.

решение1

Я предполагаю, что это строка, содержащая звездочку (" *") в вашем myfile. Вы fкак-то оцениваете и, вероятно, сталкиваетесь с проблемами, когда звездочка раскрывается как символ сопоставления с шаблоном.

Пример:

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

приводит к

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

Поскольку мой каталог содержит три файла myfile, myfile~и while3b.sh. Вам следует изучить ваш код, который вы сократили до «процесса», что он делает, когда $fполучает файл *.

Связанный контент