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

问题描述 投票:0回答:1

我正在shell程序中编写代码,如果目录中有多种类型的文件,我想做一些操作。

我尝试过这样的事情:

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

哪里找到。带有wc -l的-name命令,计算我有_type1.DAT文件终止的文件数。我希望这部分用作整数,比较它,如果超过1,则做一些动作。

有人知道是否有可能,或者有更好的想法做出这个条件陈述?

shell unix csh
1个回答
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可能会在注意到它的标准已经关闭之前继续处理很多行。
© www.soinside.com 2019 - 2024. All rights reserved.