2 votos

shell script da error [: !-z: se esperaba un operador unario durante la ejecución

He creado un bash script para matar el proceso activo buscando por nombre

pkill.sh

#~/bin/bash
pro=`ps aux | grep $1 | grep -v sh | grep -v grep | awk '{print $2}'`
if [ !-z "$pro" ]
then
   echo $1 process is not running
else
  kill -9 $pro
  echo $1 process killed forecfully, process id was $pro.
fi

y ejecute este shell script en el terminal ( v 2.8) como sigue

sh pkill.sh mongod

el trabajo está hecho, pero también da el error

pkill.sh: línea 3: [: !-z: operador unario esperado kill: uso: kill [-s sigspec | -n signum | -sigspec] pid | jobpec ... o kill -l [sigspec] el proceso mongod ha sido matado con anterioridad, el id del proceso era .

¿por qué este script da un error?

Lo intenté con

if[[ !z "$pro ]]

pero sin ayuda.

Por favor, dígame cómo escribir exactamente un bash válido script

1 votos

Considere el uso de shellcheck.net para ayudar a encontrar problemas con su shell script.

4voto

Hay tres cuestiones que puedo ver:

  • La primera línea debe ser #!/bin/bash (que junto con chmod pkill.sh le permitirá ejecutar ./pkill.sh mongod directamente)
  • El espacio en blanco es importante en bash , intente [ ! -z "$pro" ] :-)
  • -z busca una cadena vacía, por lo que ! -z prueba para un no vacío. Ignorando por un momento que -n hace lo mismo: ¿no debería llamar a kill si la cadena no está vacía?

PD: Además, utilizando pgrep o incluso pkill en lugar de las tuberías hará las cosas mucho más fáciles aquí.

0 votos

Gracias por la rápida ayuda. ¿Puede usted por favor proporcionar la sintaxis para pgrep y pkill ¿es que estos comadres incorporados hacen lo mismo?

0 votos

@pro.mean, en la terminal, es decir man command Por ejemplo, man pkill

0 votos

@pro.mean Básicamente pkill -9 mongod :-)

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X