如何比较umask

时间:2012-09-11 07:31:27

标签: linux shell unix interactive

我正在尝试比较用户的umask。我在做比较时遇到错误。我正在使用的代码是

val=`su - user -c "umask" | tail -2 | sed -n "/[0-9]/p"`
if [ $val -eq 744 ]
then

   echo "477 found."

fi

当我执行此操作时,我会发出如下错误:

sh: ^[H: A test command parameter is not valid.

我在compare命令中尝试使用=,但它仍无法正常工作。

请提出任何建议。

问候。


val已初始化为0

我以root身份运行它,所以没有登录。

我也试过给报价。

2 个答案:

答案 0 :(得分:2)

您应该在测试表达式中引用变量名称:

if [ "$val" -eq 744 ]

请参阅here了解原因。

答案 1 :(得分:1)

您的代码在我的机器上运行良好,我建议的唯一解决方案是使用稍微不同的语法,有时不同的bash版本会抱怨一种语法并接受另一种语法:

val=`su - user -c "umask" | tail -2 | sed -n "/[0-9]/p"`
if [[ $val -eq 477 ]] ; then
   echo "477 found."
fi

查看[ cond ]以了解[[ cond ]]和{{1}}之间的差异。