有时我在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)