파일 이름을 읽고, 데이터를 선택하고, 테이블을 작성한 다음 헤더를 추가하는 bash 스크립트가 있습니다. 안타깝게도 헤더를 추가하고 출력 파일을 제공할 때 다음과 같은 오류 메시지가 나타납니다.
./big_table_rcp.sh: line 153: /tmp/out: Permission denied
이는 다음 줄과 연결됩니다.
| cat - out_${scenario}.txt > /tmp/out && mv /tmp/out ${gauge}_${scenario}.txt
출력 파일에 대한 액세스 권한을 부여하는 방법을 아는 사람이 있습니까?
답변1
/tmp/out
디렉터리에 액세스할 수 있는 권한이 없기 때문에 권한 오류가 발생할 수 있습니다 /tmp
.
문제가 있는 줄 앞에 파일에 어떤 권한이 있는지 ls -l /tmp | grep out
확인하는 것과 같은 내용을 추가하세요./tmp/out
또한 을 사용하지 말고 /tmp/out
을 사용하십시오 mktemp
.
tmpfile=`mktemp`
your code here | cat - out_${scenario}.txt > "$tmpfile" && mv "$tmpfile" ${gauge}_${scenario}.txt
에서 man mktemp
:
임시 파일이나 디렉터리를 안전하게 생성하고 해당 이름을 인쇄합니다.
답변2
사용하지 마십시오 /tmp/out
. 그러나 /tmp/out.$$
동시 실행이나 남은 프로세스의 경우 충돌하지 않으며 더 좋은 점은 /tmp/out.${LOGNAME}.$$
이를 사용하면 사용자 수준 정리가 가능하다는 것입니다.