我正在尝试比较用户的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运行,所以没有登录。
我也试过引用。
发布于 2012-09-11 07:35:47
您应该在测试表达式中引用变量名:
if [ "$val" -eq 744 ]有关原因,请参见这里。
发布于 2012-09-11 09:10:27
您的代码在我的机器上执行得很好,我建议的唯一解决方案是使用稍微不同的语法,有时不同的bash版本抱怨一种语法,而接受另一种:
val=`su - user -c "umask" | tail -2 | sed -n "/[0-9]/p"`
if [[ $val -eq 477 ]] ; then
echo "477 found."
fi看看这里,看看[ cond ]和[[ cond ]]之间的区别。
https://stackoverflow.com/questions/12364827
复制相似问题