2017-09-07 12 views
-2

umask가 그룹 비트 설정을 방해하는지 어떻게 확인합니까? 내 시도 :쉘 스크립트의 umask 확인

#!/bin/sh 

out=$(umask) 
echo "$out" 

if (($out & 070) != 0); then 
    echo "$out" 
    echo "Incorrect umask" > /dev/tty 
    exit 1 
fi 

출력 :

./test.sh: line 6: syntax error near unexpected token `!=' 
./test.sh: line 6: `if (($out & 070) != 0); then' 

내가이 일을 더 쉽게 만드는 경우 비난로 전환과 함께 확인 해요.

+1

"너무 광범위하기 때문에 귀하의 질문에 가까운 투표가 진행되고 있습니다. 우리가 전체 솔루션을 작성하도록 요청하는 대신, 직접 코드를 작성하고 작동하지 않으면 최선을 다해 여기에 작성한 내용을 게시하고 문제를 해결할 수있는 도움을 요청하십시오. – Borodin

+0

지금까지의 시도는 재앙입니다. 나는 그 질문을 덧붙였다. – Jean

+0

감사합니다. if [$ umask & 070 -ne 0]'또는'if [$ umask & 070]'만 필요하다고 생각합니다. 빠른 Google로 찾기가 어렵지 않습니다. – Borodin

답변

3

산술 계산을하려면 이중 괄호를 사용해야합니다. https://www.gnu.org/software/bash/manual/bashref.html#Conditional-Constructs

m=$(umask) 
if ((($m & 070) != 0)); then 
    echo error 
fi 

참조 또는 당신은 glob-pattern matching를 문자열로 umask를 치료하고 사용할 수 있습니다

if [[ $m == *0? ]]; then 
    echo OK 
else 
    echo err 
fi 

bash는 고유 구문 많이있다 : 그것은 모든/펄과 같은 C 아니다. 설명서를 읽거나 (최소한 참조) 여기에서 질문을 읽으십시오. 계속 질문하십시오.

+0

Answer 저는 찾고있었습니다. 특히 마지막 부분. 감사! – Jean

+0

나는 매뉴얼에 실제로 링크하려고했다 : https://www.gnu.org/software/bash/manual/bashref.html –