Unix TCSH:使用FOREACH循环GREP结果无效

Unix TCSH:使用FOREACH循环GREP结果无效,unix,foreach,grep,tcsh,Unix,Foreach,Grep,Tcsh,我正在努力做一件简单的工作。Grep文本文件中的名称列表,将其输入foreach循环,并对其执行一些操作,例如删除或复制文件名 但我似乎无法将grep的结果输入到foreach的变量中 foreach key ( `grep -r '*' /nfs/png/disks/png_vlvpe_disk007/tvpv/prod_suite/users/clwong/Pat_Label_Remove_C0_17_17_vrevL2List/vrevL2_append.txt` ) rm $key e

我正在努力做一件简单的工作。Grep文本文件中的名称列表,将其输入foreach循环,并对其执行一些操作,例如删除或复制文件名

但我似乎无法将grep的结果输入到foreach的变量中

foreach key ( `grep -r '*' /nfs/png/disks/png_vlvpe_disk007/tvpv/prod_suite/users/clwong/Pat_Label_Remove_C0_17_17_vrevL2List/vrevL2_append.txt` ) 
rm $key
end
有什么想法吗?

这里的诀窍是使用
set noglob禁用文件全局搜索

获取文件列表,例如:

dfarrell% cat files.txt
file1.txt*
file2.txt*
file3.txt*
file4.txt*
您可以使用

dfarrell% set noglob; foreach file ( `cat files.txt` )  
foreach? unset noglob
foreach? rm -v "$file"
foreach? set noglob
foreach? end
file1.txt*
file2.txt*
file3.txt*
file4.txt*
使用
unset noglob


注意,我在这里输入命令行,这就是为什么要使用
foreach?
提示符。在文件中的shell脚本中,您不会键入或以这种方式查看它-它来自shell

我以为cat会将内容连接成一个字符串?cat会读取一个或多个文件的内容。这有点像一个匹配所有内容的grep,但是如果你不应用正则表达式,你也可以列出文件。嗯,需要一些帮助。。。设置noglob后,grep工作正常,但是在循环中我需要使用cp$file/destination和$file=filename*,它有一个通配符,并且在设置noglob时完全失败……您可以在循环开始时关闭noglob,然后在循环结束时重新打开它!我试过了,没用。因为当我在循环中重新打开glob时,foreach循环失败了。丹,谢谢你的回答。我今天知道了一些新的东西。如果我只是用grep命令搜索行,它会正确打印出来。但当我在后面引用它时,它失败了。为什么?查找工作正常。文件内容是什么样子的?输入字段分隔符file1haha*file2haha*file3haha*可能有问题,每个字段都由newlineAh分隔,文件名为globbing。我想如果你现在看看我的答案,它会对你有所帮助:)从名字上看,我认为问题是因为grep的结果是全球化的。。。。因此,它不能输入foreach。对的