/ / ¿Cómo recuperarse cuando se atasca ejecutando comandos de shell incorrectos? - linux, shell, git-bash

¿Cómo recuperarse cuando se atasca ejecutando comandos de shell incorrectos? - linux, shell, git-bash

Estoy usando Git Bash 2.9.0-64-bit en win7 64bit. Aquí está mi código de shell

function sum1_x(){
a=$1
while [ $a -ge 1 ]; do
sum=$[$sum + $a]
a=$[$a - 1]
done

echo $sum
}

sum $1

En Git Bash, mi historial de tipos es el siguiente:

wen @ PC-WEN MINGW64 / d / git / (dev)
$ sh sum1_x.sh
salida
: q

dejar
dejar()
salida()

Después de que escribí sh sum1_x.sh, Ya no puedo ejecutar ningún comando de shell.Probé muchos comandos como muestra. Sé que hay errores en mi secuencia de comandos, pero ¿cómo puedo volver a ejecutar la secuencia de comandos de shell frente a este tipo de problemas? Nada puedo hacer ahora.

Respuestas

1 para la respuesta № 1

Tienes varios problemas con tu script:

  1. tienes función sum1_x pero estas llamando sum $1
  2. No verificaste que el valor de entrada existe, por eso te atascas en un bucle infinito

Aquí está el script corregido con la comprobación de que el argumento de entrada existe:

function sum1_x(){
a=$1
while [ $a -ge 1 ]; do
sum=$[$sum + $a]
a=$[$a - 1]
done

echo $sum
}

if [ -z "$1" ]; then  # check that input parameter is exists
echo "No input"
else
sum1_x $1
fi

Como detener el programa:

  1. Ctrl + "c"
  2. Abre nuevo mingw y encuentra pid del progrman via ps -aux | grep "sum1_x.sh"
    y luego usar kill pid para matar el programa

0 para la respuesta № 2

Como se muestra en la pregunta, el script de shell contiene muchos errores. El comando sh sum1_x.sh Estaba equivocado también.Debería ser reemplazado por comando sh sum1_x.sh 9 O cosas así. Después de corregir estos errores, se ejecuta sin problemas e imprime la suma correcta.

Pero todavía no sabía cómo comprar el script de shell. Afortunadamente, por accidente, hice clic en Ctrl & c, y puedo ingresar los comandos de shell nuevamente.