2014-10-28 3 views
1

나는 bash 스크립팅을 배우려고합니다. 공백을 파일 이름으로 밑줄을 긋는 스크립트를 작성했습니다. 괜찮아. 여태까지는 그런대로 잘됐다.bash 스크립트는 루트 권한이 필요합니다.

내 스크립트가 다른 사용자 (예 : 루트 또는 www 데이터)가 소유 한 파일을 포함하는 특정 디렉토리에 들어갈 수 있습니다.

내 스크립트는이 파일들을 다행히 변환 할 수 없습니다 :) 그러나 나는 "당신은 루트 권한이 필요합니다"와 같은 경고 메시지를 선호합니다.

if [[ $# -eq 2 ]]; then 
    echo "Converting directory $2 .." 
    find . -name '* *' | while read file 
    do 
     target=`echo "$file" | sed 's/ /_/g'` 
     mv "$file" "$target" 2> /dev/null 
    done 
else 
    fOptionE (produces usage message) 
fi 

당신이 날은 출력 "루트 권한이 필요합니다"를 반환 할 수있는 적절한 방법을 찾는 데 도움이 수 :

이 변환 블록

?

if [ ! -w "$file" ] 
then 
    echo "The file is NOT writable" 
else 
    echo "The file is writable" 
fi 
+1

이 제거'2>/dev/null'을 사용하면 (자),'mv'가 유용한 정규의 에러 메세지를 기입 할 수 있습니다. mv가 실패 할 수있는 다른 이유가 많이 있기 때문에 루트가 필요하다고 주장하는 것보다 낫습니다. –

+0

"루트 필요"를 확인하려면 사용 권한을 수동으로 확인하려고 할 수 있지만 올바르게 수행하는 것이 반드시 간단한 것은 아닙니다. –

답변

0

당신은이 파일에 쓸 수 있는지 확인하기 위해 스크립트에

chmod u+x your_script.sh 
./your_script.sh 
0

시도를 실행 권한이 주어진 적이

if [ x"`whoami`"x != x"root"x ] 
then 
    : # do something 
fi 
관련 문제