0

我正在尝试比较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.

我已经=在比较命令中尝试过,但它仍然无法正常工作。

请提出任何建议。

问候。


val已初始化为0.

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

我也尝试过引用。

4

2 回答 2

2

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

if [ "$val" -eq 744 ]

请参阅此处了解原因。

于 2012-09-11T07:35:47.003 回答
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 ]]

于 2012-09-11T09:10:27.973 回答