如何在csh的一行中编写foreach?

Cha*_*Kim 9 shell foreach csh

有时我在csh中对不同的目标文件使用相同的foreach操作.
如果我可以在一行中给出foreach命令,我可以轻松地替换目标文件名来重复该过程.(我通常使用`find.-name ...`来表示目标文件)
为了这个问题的目的,让我们假设我想要捕获所有*.txt文件.

$ foreach i (*.txt)
foreach? cat $i
foreach? end
Run Code Online (Sandbox Code Playgroud)

我阅读https://unix.stackexchange.com/questions/32873/running-a-full-foreach-command并试过

alias disp 'echo "foreach i (*.txt)"; echo "cat "\$"i"; echo "end"; | /bin/csh'
Run Code Online (Sandbox Code Playgroud)

当我输入disp它给我Invalid null command.
如果我可以在一行中完成,我可以做!foreach:gs/\.c\>/.h/(用.h替换.c).我该怎么做?

小智 8

此方法对我有用:

printf 'foreach f ( 1 2 3 )\n echo $f \n end' | tcsh
Run Code Online (Sandbox Code Playgroud)