【问题标题】:How to use wildcard in if condition csh script如何在 if 条件 csh 脚本中使用通配符
【发布时间】:2019-12-13 22:05:30
【问题描述】:

我有以下 csh 脚本来检查是否存在扩展名为 sts 的文件。如果存在,则使用 foreach 语句压缩所有 sts 文件。但我的 if 条件不适用于通配符 *。有什么帮助吗?

#! /bin/csh

if (-e "m*.sts") then
 foreach file (m*.sts)
  bzip2 $file
 end
endif

我可以完全删除 if 语句,因为我的脚本的 foreach 部分运行良好,但如果我的文件已经压缩,那么我脚本中这些行之后的行将不起作用,因为 foreach 不匹配。 我已经用 !-e 尝试了 if 语句,但没有使用引号,但没有任何效果。

【问题讨论】:

    标签: shell csh


    【解决方案1】:

    测试-e "m*.sts" 检查当前文件夹中是否有一个名为m*.sts 的文件。

    您想尝试使用 nonomatch 强制文件名扩展。否则,不匹配任何文件的命令将失败。

    set nonomatch=1
    FLIST=( m*.sts )
    usnet nonomatch
    if (-e "$FLIST") then
     foreach file ($FLIST)
      bzip2 $file
     end
    endif
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-04-02
      • 2010-11-29
      • 2013-04-04
      • 1970-01-01
      • 2013-11-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多