比较stat命令输出:if:编号错误。

时间:2014-06-13 21:46:19

标签: csh

我是csh的新手。我想比较stat的输出,但是如果出现错误,它会给我一个错误:数字不正确。我可以将它们转换为字符串并比较吗?还有其他方法吗? 谢谢!

代码是:

set BEFORE_TIME="`stat -c %y /home/a.xml`"

//call cpp program that might change a.xml

#if file has changed do operations
set AFTER_TIME="`stat -c %y /home/a.xml`"

if ( $BEFORE_TIME != $AFTER_TIME ) then   //This comparison is not working
    echo "File a.xml has changed"

else
    echo "File a.xml has not changed" 
endif

1 个答案:

答案 0 :(得分:1)

stat -c %y ...的输出将包含多个单词,例如

2013-01-27 13:03:03.563041058 -0800

您在set命令上使用了双引号,但您也需要引用变量的引用。

改变这个:

if ( $BEFORE_TIME != $AFTER_TIME ) then

到此:

if ( "$BEFORE_TIME" != "$AFTER_TIME" ) then

或者这个:

if ( $BEFORE_TIME:q != $AFTER_TIME:q ) then

请注意,使用一个真正的shell 你会遇到同样的问题,如shbash这样的另一个shell,解决方案是相同的(除了除cshtcsh以外的其他shell没有:q后缀。