2013-07-06 72 views
2

有没有办法从shell脚本执行指定数量的行?我会尝试复制它们并将它们放在单独的.sh上,但我不知道是否有快捷方式...执行n行shell脚本

+0

你为什么要问?你不能只用'bash -vx'来理解脚本在做什么吗? –

+0

我有一个20行脚本,有时候我只想执行前两行,有时候只执行整行。 – paranoidhominid

+0

然后制作只有两行第一行的另一个脚本。 –

回答

2

重组shell脚本并创建函数。

说真的,把每一行代码放到一个函数中。

然后(使用ksh作为示例),以“。”作为源脚本。进入交互式shell。

您现在可以按名称运行任何函数,并且只有该函数内的代码才能运行。

以下简单的例子说明了这一点。您可以通过两种方式使用它: 1)链接脚本,以便可以通过其中一个函数的名称来调用它。 2)来源脚本(与. script.sh),然后你可以重用其他地方的功能。

function one { 
    print one 
} 

function two { 
    print two 
} 

(
    progname=${0##*/} 
    case $progname in 
    (one|two) 
     $progname [email protected] 
    esac 

) 
+0

我对任何长度超过10-12行的脚本都采用了这种风格,并且使测试代码和重用脚本部分变得更加容易。 –

0

大多数炮弹都没有这种设施。你将不得不以艰难的方式去做。

1

编写自己的脚本的/ tmp/headexecute例如

#!/bin/ksh 
trap 'rm -f /tmp/somefile' 0 
head -n $2 $1 > /tmp/somefile 
chmod 755 /tmp/somefile 
/tmp/somefile 

把它与文件的名称和行数来执行

的/ tmp/headexecute的/ tmp/originalscript 10

0

这可能为你工作(GNU SED):

sed -n '1{h;d};H;2{x;s/.*/&/ep;q}' script 

此执行script的前两行。