유닉스 / 리눅스 bash 프롬프트에서`line` 명령은 권한이 거부되었다


1

최근에 스크립트 코드 작성 방법을 배우고 있습니다.

나는 대본을 썼다.

#!/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 스크립트 실행. 왜?

누구든지 호의를 베풀 수 있습니까? 미리 감사드립니다.

답변:


0

내 생각 엔 별표 ( " *")가 포함 된 줄 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합니다 *.


고마워 알았어 방금 튜토리얼에서 복사했으며 답변 process이 함수 일 수 있음을 상기시킵니다 . 나는 이것을 생략했다. :)
shanechiu
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.