执行n行shell脚本
答
重组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行的脚本都采用了这种风格,并且使测试代码和重用脚本部分变得更加容易。 –
答
大多数炮弹都没有这种设施。你将不得不以艰难的方式去做。
答
编写自己的脚本的/ 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
答
这可能为你工作(GNU SED):
sed -n '1{h;d};H;2{x;s/.*/&/ep;q}' script
此执行script
的前两行。
你为什么要问?你不能只用'bash -vx'来理解脚本在做什么吗? –
我有一个20行脚本,有时候我只想执行前两行,有时候只执行整行。 – paranoidhominid
然后制作只有两行第一行的另一个脚本。 –