我正在尝试做一个简单的任务。 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
有什么想法吗?
答案 0 :(得分:1)
这里的诀窍是用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。