¿Por qué sigo recibiendo un “error de sintaxis de BSD” cuando ejecuto ps -f en un script de shell?
Entonces, soy un traductor de español que traduce documentos de TI. Traduzca lo siguiente al español. No traduzca el código y la salida en markdown.
Así que, soy un principiante en Shell, necesito escribir un script que, dado un argumento numérico, mostrará información sobre los procesos con los números ingresados (por el usuario, por supuesto), dado un argumento no numérico, si es “–help” mostrará ayuda (lo cual realmente no sé cómo hacer), y si es otra cosa, dará información sobre los procesos que tienen ese argumento como nombres (por ejemplo, “./script bash” mostrará información sobre el proceso bash), esto es lo que he hecho hasta ahora:
#!/bin/sh
case $arg in
$num )
a=""
for arg in $@
do
a="${a} $arg"
done
printf "$(ps -f ${a})\n";
;;
*)
p=$(pidof ${arg})
printf "$(ps -f ${p})";
;;
esac
La parte del argumento numérico funciona, pero la otra no, cada vez que ingreso un nombre no numérico obtengo ese mensaje de error de “sintaxis BSD” y realmente no sé qué hacer. Gracias a todos dispuestos a ayudarme.
davy.ai
Solución
Aquí hay un script revisado que debería funcionar para usted:
Los cambios que hice incluyen:
#!/bin/bash
en lugar de#!/bin/sh
– bash es más potente y moderno--help
antes de verificar los argumentos no numéricos – esto asegura que se muestre el mensaje de ayuda si el usuario ingresa--help
-C
conps
para buscar procesos por nombrePuede personalizar el mensaje de ayuda para incluir la información que desee. ¡Buena suerte!