A veces necesito ejecutar un solo comando que está en un script de shell.
Ya sé que sed -n 'line_num p'
puede imprimir esa línea. Pero, ¿cómo puedo ejecutar esa línea impresa específica como un comando?
bash
command-line
zen
fuente
fuente
line_num
yp
, por ejemplo, siline_num
es 123, puede hacerlosed -n 123p | bash
. Y sish
es suficiente, simplemente use ensh
lugar debash
.sed -n 'line_num p' | sh
podría ser otra solución? ¿Este tiene más compatibilidad?sh
realmente. En Debian (y derivados) sistemassh
es generalmentedash
. Si el script está escritodash
(o de lo contrario se basa en la sintaxis portátil), entonces probablemente sí, pero si está escrito,bash
entonces definitivamente no.history
y 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:
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.
fuente
man history
history
está integrado, por lo que está documentado enhelp history
(oman 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...
Eso obtendrá solo la
$NUM
línea de su script en la variable de shell$line
y luego la evaluará como un comando en el shell actual.Otra forma de hacer esto podría ser:
fuente
eval
.gnu sed
tiene lae
bandera así que algo asísed "${NUM}"'!d;s/^//e;q'
también funcionaría¿Estás editando tu script con vim (vi en Linux)? En vi agregue un mapeo:
y luego cuando estés en la línea interesante en vi presiona F4
fuente
En bash puedes ejecutar el siguiente comando:
fuente