Недавно я научился писать скриптовый код.
Я написал сценарий:
#!/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
получает файл *
.