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_numyp, por ejemplo, siline_numes 123, puede hacerlosed -n 123p | bash. Y sishes suficiente, simplemente use enshlugar debash.sed -n 'line_num p' | shpodría ser otra solución? ¿Este tiene más compatibilidad?shrealmente. En Debian (y derivados) sistemasshes generalmentedash. Si el script está escritodash(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:
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 historyhistoryestá 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
$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:
fuente
eval.gnu sedtiene laebandera 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