Bash:从特定行开始运行脚本

Bash:从特定行开始运行脚本,bash,Bash,有没有一种方法可以从特定的行开始运行bash脚本 假设我的脚本如下所示: 0 #!/bin/bash 1 ... 2 clone a repository 3 ... 4 command that crashed 我去修复第4行,我想重新运行脚本,而不运行第1、2、3行的代码,而是直接从第4行开始 我快速搜索这个问题的标题,但没有给我答案。如果有一种方法可以用bash实现这一点,那么它将非常有用 谢谢你的回答。如果要在开头保留一些行,另一种解决方案是: # assuming you want

有没有一种方法可以从特定的行开始运行bash脚本

假设我的脚本如下所示:

0 #!/bin/bash
1 ...
2 clone a repository
3 ...
4 command that crashed
我去修复第4行,我想重新运行脚本,而不运行第1、2、3行的代码,而是直接从第4行开始

我快速搜索这个问题的标题,但没有给我答案。如果有一种方法可以用bash实现这一点,那么它将非常有用

谢谢你的回答。如果要在开头保留一些行,另一种解决方案是:

 # assuming you want to run your script except from line 4 to 7
 sed '4,7s/^/#/g' -i script.sh; ./sript.sh #this replaces the beginning of the line ^ with # from lines 4 to 7
 # to undo the comments
 sed '4,7s/^#//g' -i script.sh; ./sript.sh
试试这个:

 bash <(sed -n '5,$p' script.sh)

bash我认为除了注释或者复制粘贴之外,没有其他方法可以做到这一点。谢谢,但从长远来看,我一直在寻找一个更快的解决方案。这就是为什么我没有将其作为答案发布。虽然我不指望你会得到一个更好的。好。。。如果您真的想忽略给定行上方的所有内容,我想您可以使用类似于
sed-ne'###,$p'$script“| bash-s
的方法。我只是编辑我的问题,因为我还希望可以选择保持开头的一些行未注释。也许还有更好的方法(比我的建议更好)…这样你就不需要实际编辑脚本了。另一种方法是
tail-n+5script.sh | bash
。然而,用这两种方法,如果你把你的行号混在一起,例如,告诉它开始在一个循环中运行,事情就会崩溃……太丑陋了,太美了!twalberg为了防止行号混淆,我尝试了
cat-n script.sh
其中
-n
给出行号。之后,我知道使用
tail