Respuestas:
Prueba este chico =):
sed -n 'line_num p' | bash
o
"$(sed -n 'line_num p')"
line_numy p, por ejemplo, si line_numes 123, puede hacerlo sed -n 123p | bash. Y si shes suficiente, simplemente use en shlugar de bash.
sed -n 'line_num p' | shpodría ser otra solución? ¿Este tiene más compatibilidad?
shrealmente. En Debian (y derivados) sistemas shes generalmente dash. Si el script está escrito dash (o de lo contrario se basa en la sintaxis portátil), entonces probablemente sí, pero si está escrito, bashentonces definitivamente no.
historyy veo que quiero ejecutar la línea 900, puedo ejecutar la línea 900 de alguna manera?
Si está haciendo esto de manera interactiva, podría escribir la línea en el historial de bash:
history -s "$(sed -n 'line_num p')"
Luego presione ↑Enterpara insertar la línea en el buffer de línea de lectura y ejecútelo; eso te da la oportunidad de mirar la línea antes de que sea demasiado tarde.
man history
historyestá integrado, por lo que está documentado en help history(o man bash, pero eso es mucha lectura). Citando lo anterior, history -s"agregará los ARG a la lista del historial como una sola entrada"
Tu puedes hacer...
{ head -n"$((NUM-1))"; IFS= read -r line; } </path/to/script >/dev/null
eval "$line"
Eso obtendrá solo la $NUMlínea de su script en la variable de shell $liney luego la evaluará como un comando en el shell actual.
Otra forma de hacer esto podría ser:
</path/to/script sed "${NUM}q;d" >/tmp/"$$"
. /tmp/"$$" ; rm /tmp/"$$"
eval.
gnu sedtiene la ebandera así que algo así sed "${NUM}"'!d;s/^//e;q'también funcionaría