unix 执行n行shell脚本

6yt4nkrj  于 2022-11-04  发布在  Unix
关注(0)|答案(5)|浏览(208)

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

xwbd5t1u

xwbd5t1u1#

重新组织shell脚本并创建函数。
说真的,把每一行代码都放进一个函数里。
然后(以ksh为例),将带有.“”的脚本源代码输入到交互式环境中。
现在,您可以按名称运行任何函数,并且只运行该函数中的代码。
下面这个简单的例子说明了这一点。你可以通过两种方式来使用它:1)链接脚本,以便您可以通过其中一个函数的名称调用它。2)获取脚本(使用. script.sh),然后您可以在其他地方重用这些函数。

function one {
     print one
}

function two {
     print two
}

(
    progname=${0##*/}
    case $progname in
    (one|two)
         $progname $@
    esac

)
eoxn13cs

eoxn13cs2#

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


# !/bin/ksh

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

用文件名和要执行的行数调用它
/tmp/标题执行/tmp/原始脚本10

xfb7svmp

xfb7svmp3#

大多数炮弹都没有这样的设施。你将不得不用艰苦的方式来做。

ve7v8dk2

ve7v8dk24#

这可能对你有用(GNU sed):

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

这将执行script的前两行。

7cjasjjr

7cjasjjr5#

x=* 起始行 *
y=* 要执行的行数 *
eval“$(tail -n +$x脚本|标题-$y)”

相关问题