使用Unix命令的结果作为整数?

时间:2019-02-05 17:07:06

标签: shell unix csh

我正在用cshell程序编写代码,如果目录中文件类型不止一种,我想采取一些措施。

我已经尝试过以下方法:

if "$(find . -name '*_type1.DAT' | wc -l)"  >1 then 
        echo "TRUE"
else echo "FALSE"
endif

在哪里找到。 wc -l的-name命令,计算有_type1.DAT个文件终止的文件数。我希望这部分可以用作整数,以进行比较,如果大于1,则可以执行一些操作。

有人知道是否有可能,或者有更好的主意做出此条件声明?

1 个答案:

答案 0 :(得分:0)

如果可以避免,请don't use csh。如果这是旧版代码,则应使用以下代码:

if ( `find . -name '*_type1.DAT' -printf "x\n" | head -2 | wc -l`  > 1) then 
        echo "TRUE"
else 
        echo "FALSE"
endif

说明:

  • `xyz`执行xyz命令,并将输出捕获为字符串。这与两个bash替代项xyz和$(xyz)相同。
  • -printf "x\n"确保每个条目仅打印一行。即使某些文件名包含换行符,也会打印一行。
  • 如果有许多head -2文件,
  • find将迫使"*_type1.DAT"提前退出。这是不完善的,find在注意到其stdout已关闭之前可能会继续处理很多行。