resueltos - ¿Cuál es el significado de ${0%/*} en un script bash?
scripts linux ejercicios resueltos (1)
Se llama Parameter Expansion
. Echa un vistazo a esta página y al resto del sitio.
Lo que ${0%/*}
hace es, expande el valor contenido en el argumento 0 (que es la ruta que llamó a la secuencia de comandos) después de eliminar la cadena /*
sufijo al final de la misma.
Entonces, $0
es lo mismo que ${0}
que es como cualquier otro argumento, ej. $1
que puede escribir como ${1}
. Como dije, $0
es especial, ya que no es un argumento real , siempre está ahí y representa el nombre del guión. La Expansión de parámetros funciona dentro de {
}
- llaves, y %
es un tipo de Expansión de parámetros.
%/*
coincide con la última ocurrencia de /
y elimina cualquier cosa ( *
significa algo) después de ese carácter. Mire este simple ejemplo:
$ var="foo/bar/baz"
$ echo "$var"
foo/bar/baz
$ echo "${var}"
foo/bar/baz
$ echo "${var%/*}"
foo/bar
Intento entender un script de prueba, que incluye el siguiente segmento:
SCRIPT_PATH=${0%/*}
if [ "$0" != "$SCRIPT_PATH" ] && [ "$SCRIPT_PATH" != "" ]; then
cd $SCRIPT_PATH
fi
¿Qué significa el ${0%/*}
? Gracias