el script de shell da el error [:! -z: el operador unario esperado mientras se ejecuta

Creé un script bash para matar el process 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 ejecutar este script de shell en terminal (v 2.8) como sigue

  • Usar bash / terminal para get el número de ciclos de recarga de la batería
  • ¿Cómo configuro mi aplicación Terminal con bash e iTerm2 con zshell y oh my zsh?
  • Establecer una variable para el resultado de un command de terminal dentro de un AppleScript
  • Cómo encontrar retraso al lanzar una nueva Terminal (iTerm)
  • Evite que las tabs de terminales se renombren automáticamente
  • Dividir file csv usando el service Automator (Menú contextual del buscador)
  • 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 | jobspec … o kill -l [sigspec] mongod process asesinado de forma anticipada, la identificación del process fue.

    ¿por qué este script da un error?

    Lo intenté con

    if[[ !z "$pro ]]

    pero no ayuda.

    Por favor, dime cómo escribir un script bash válido

  • ¿Qué hace `brew man` hacer?
  • En Terminal, ¿cómo borrar el command escrito rápidamente?
  • Script abre dos windows terminales
  • Problema con el menu "Abrir con"
  • Ubique largas routes de files en la unidad externa con terminal
  • Hacer que los directorys aparezcan primero en la terminal con `ls`
  • One Solution collect form web for “el script de shell da el error [:! -z: el operador unario esperado mientras se ejecuta”

    Hay tres problemas que puedo ver:

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

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

    Loving Apple Products like poisoning (iPhone, iPad, iMac, Macbook, iWatch).