【问题标题】:Executing nested loops+foreach+csh执行嵌套循环+foreach+csh
【发布时间】:2012-04-13 22:27:36
【问题描述】:

自从我使用 csh 格式以来已经有一段时间了,我在一些事情上遇到了一些麻烦。在 Matlab 中执行起来似乎要容易得多,但是由于我要与之交互的程序,我需要在终端上执行此操作。

这就是我想要做的:我有一个结构如下的文件 del.txt

1

2

3

4

等等。所以每个值都在它自己的行中,并且所有数据都有一列。我的目录中有很多其他文件。我想将值 1(在本例中为 1)与文件 1 匹配,将值 2 与文件 2 匹配,依此类推。所以这就是我所做的......

代码:

!/bin/csh

foreach a (cat del.txt)

foreach sta(ls *.HHZ)

echo a is $a

echo $sta


cat <<END>>macro.m

r $a

r $sta

结束

sac macro.m

rm macro.m

结束

结束

但是我实现的是它遍历 del.txt 和每个文件中的所有值,然后移动到我目录中的下一个文件并遍历所有值。我无法弄清楚这应该采用的格式以匹配正确的值。在我能让它们匹配之前,我还没有在脚本中做太多事情。请帮助有人可以告诉我我做错了什么吗?我读到 foreach 命令将执行每个文件上的所有命令..但无法找到解决此问题的方法。我想要它做的是从 del.txt 中获取值 1 并将其与目录中的文件 1(sta)匹配完成循环,然后从 del.txt 中获取值 2 并将其与目录中的文件 2 匹配(站)。我从来没有在一个文件子集上使用 csh 进行简单的迭代,而且我不确定如何将这些值相互引用。任何帮助将不胜感激。我还没有找到一种简单的方法来做到这一点而不把所有的东西都写出来。我查看了“for”和“while”命令。如果有简单的方法可以做到,我没有看到。

干杯, 克

【问题讨论】:

    标签: loops for-loop foreach nested


    【解决方案1】:

    如果我理解正确,您有一个 txt 文件将列出字符串,并且您希望它与文件匹配。

    我假设你的这个特殊陈述:

    我想将值 1(在本例中为 1)与文件 1 匹配

    你的意思是将1处的字符串与文件1的文件名匹配。

    这是一个基于此假设的可能解决方案(无论如何这都会对您有所帮助):

    #Store value in file.txt in a array
    set file_var = `cat file.txt`
    #Store file list in my_dir in a var
    set my_dir = <your dir path>
    set file_list_var = `ls $my_dir`
    
    #Let's print "file Match: for every match
    foreach var1 ($file_var)
         foreach var2 ($file_list_var)
              if("$var1" == "$var2") echo $var1 = $var2 : Match Found.
         endif
    endif
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-24
      • 1970-01-01
      • 2015-06-05
      • 2016-07-14
      • 2012-05-16
      • 1970-01-01
      相关资源
      最近更新 更多