-1

如何检查 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。

4

1 回答 1

4

您需要使用双括号来获得算术评估。见https://www.gnu.org/software/bash/manual/bashref.html#Conditional-Constructs

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

或者您可以将 umask 视为字符串并使用全局模式匹配

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

bash 有许多独特的语法:它根本不像 C/perl。阅读(或至少参考)手册并在此处阅读大量问题。继续提问。

于 2017-09-08T01:07:39.050 回答