擅长:python、mysql、java
<p>极简主义版本:</p>
<pre><code>$ function myrun {
[[ "$1" = "" ]] && echo "usage: myrun python_script.py" && return
local cmd=$(head -n 1 < "$1" | sed s'/# *MYRUN://')
$cmd
}
$ myrun script.py
appending output to nohup.out
$ cat nohup.out
Hello world
Once again
$
</code></pre>
<p>(我不清楚在函数的最后一行使用<code>eval "$cmd"</code>还是简单地使用<code>$cmd</code>更好,但是如果希望在MYCMD指令中包含“&;”,那么<code>$cmd</code>就更简单了。)</p>
<p>通过一些基本检查:</p>
<pre><code>function myrun {
[[ "$1" = "" ]] && echo "usage: myrun python_script.py" && return
local cmd=$(head -n 1 <"$1")
if [[ $cmd =~ ^#MYRUN: ]] ; then cmd=${cmd#'#MYRUN:'}
else echo "myrun: #MYRUN: header not found" >&2 ; false; return ; fi
if [[ -z $cmd ]] ; then echo "myrun: no command specified" >&2 ; false; return; fi
$cmd # or eval "$cmd" if you prefer
}
</code></pre>