执行n行shell脚本

时间:2013-07-06 07:02:16

标签: linux shell unix

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

4 个答案:

答案 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 $@
    esac

)

答案 1 :(得分: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

答案 2 :(得分:0)

大多数炮弹没有这样的设施。你必须以艰难的方式去做。

答案 3 :(得分:0)

这可能适合你(GNU sed):

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

这将执行script的前两行。