我是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
答案 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 你会遇到同样的问题,如sh
或bash
这样的另一个shell,解决方案是相同的(除了除csh
和tcsh
以外的其他shell没有:q
后缀。