programacion - programar shell script linux
Cómo pasar parámetros usando argumentos de línea de comandos en script de shell (1)
Como read
lee de stdin, debe pasar los nombres de archivo en stdin:
{ echo "file.jmx"; echo "file.jtl"; } | ./script.sh start
Usar un documento aquí puede ser más ordenado:
./script.sh start <<END_INPUT
file.jmx
file.jtl
END_INPUT
Un poco de revisión del código: si el uso solo tiene un único parámetro, "inicio" o "detener", no necesita el ciclo while:
#!/bin/sh
do_start_stuff() { ... }
do_stop_stuff() { ... }
case "$1" in
start) do_start_stuff;;
stop) do_stop_stuff;;
*) echo "Usage: $0 {start|stop}"; exit 1;;
esac
Para reescribir su script para tomar todos los parámetros:
#!/bin/sh
usage() {
echo "Usage $0 {start ...|stop}"
# provide more info about arguments for the start case
# provide an example usage
}
case "$1" in
stop) do_stop_stuff ;;
start)
shift
if [ "$#" -ne 4 ]; then usage; exit 1; fi
jmeter.sh -n -t "$1" "$2" -l "$3" "$4"
;;
*) usage ;;
esac
Soy nuevo en el script de shell y estoy trabajando en scripts de shell para jmeter. Hasta el momento para ejecutar un script jmeter, he escrito mi script de shell como a continuación:
#! bin/sh
start(){
echo "Please enter the file name .jmx extension"
read file
echo "Please enter the log file name .jtl extension"
read log_file
jmeter.sh -n -t $file -l $log_file
}
while [ "$1" != "" ]; do
case "$1" in
start )
start
;;
*)
echo $"Usage: $0 {start|stop}"
exit 1
esac
shift
done
Tengo un método de detención para finalizar el proceso. Aquí, para este script, le pido al usuario que introduzca .jmx
fileName y .jtl
fileName en líneas diferentes. Pero quiero que el usuario pueda pasar .jmx
fileName y .jtl
fileName en el momento en que escribe el comando para ejecutar el script.
ejemplo: $ ./script.sh .jmx fileName .jtl fileName
, entonces, la secuencia de comandos debería ejecutarse.
No sé cómo hacerlo. ¿Puede ayudarme alguien, por favor?