2017-09-07 10 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' 

が、私はそれは物事が容易になります場合はbashに切り替えるとOKです。

+1

あなたの質問は「広すぎる」ため、近い票を得ています。私たちにソリューション全体を書くように依頼するのではなく、あなた自身でコードを作成し、それがうまくいかない場合は、ここに書いたものを投稿し、修正するための援助を依頼してください。 – Borodin

+0

これまでの私の試みは災害です。私はその質問にそれを加えました。 – Jean

+0

ありがとうございます。私はあなたが '' $ [umask&070 -ne 0] 'か' if [$ umask&070] 'だけを必要とすると思います。クイックグーグルで見つけるのは難しいことではありません。 – Borodin

答えて

3

二重括弧を使用して算術評価を行う必要があります。 https://www.gnu.org/software/bash/manual/bashref.html#Conditional-Constructs

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

それとも、文字列としてのumaskを扱い、glob-pattern matchingを使用することができますを参照してください:

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

bashはユニークな構文の多くを持っている:それはすべてでC/perlのようなではありません。マニュアルを読んで(少なくとも参照してください)、の質問をここで読んでください。質問を続けてください。

+0

答え私が探していた。特に最後の部分。ありがとう! – Jean

+0

私は実際にマニュアルにリンクするつもりだった:https://www.gnu.org/software/bash/manual/bashref.html –

関連する問題