例如我有一个包含内容的csh
脚本
mkdir tmp
grep string1 file2
rm *
grep string2 ~/file2
setenv a 8
rm *
我只想在最后一次出现 grep 之前执行那些命令,这意味着 setenv 和最后一个 rm 不会运行,但会运行之前的所有命令。有谁知道使用另一个 shell 脚本处理这个脚本的方法? c shell 是首选。提前致谢。
最佳答案
我终于想出了一个方法来做到这一点。 由于我的机器只支持c shell,所以我的脚本是在c shell中。
#!/bin/csh
set line_num = "`grep -n 'grep' filename | tail -1 | grep -o '^[0-9]\+'`"
@i = 0
foreach command ("`cat filename`")
@i += 1
$command
if($i == $line_num) then
break
endif
end
第一行找出最后一次出现“grep”的行号 然后 foreach 循环简单地使用一个计数器来查看我们是否到达命令。
关于linux - 如何在 linux 中最后一次出现特定命令之前运行所有命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37729690/