¿Qué significa exactamente $*
en un script de shell?
Por ejemplo, consideremos el siguiente fragmento de código
$JAVA_HOME/bin/java/com/test/Testclass $*
¿Qué significa exactamente $*
en un script de shell?
Por ejemplo, consideremos el siguiente fragmento de código
$JAVA_HOME/bin/java/com/test/Testclass $*
Significa todos los argumentos pasados a la secuencia de comandos o a la función, divididos por palabra.
Suele ser incorrecto y debe reemplazarse por "[email protected]"
, que separa los argumentos correctamente.
Bueno, @ ДМИТРИЙ МАЛИКОВ (¿Dmitri?) ya explicó cómo $ * se construyó inicialmente como una sola cadena. Lo importante aquí es que posteriormente se somete a la división de palabras normal de la capa, * a menos que * esté entre comillas. "$ *" se asegurará de que el argumento se siga procesando como una sola cadena larga. "$ @" obliga a la lista de argumentos a procesarse como una matriz de cadenas entre comillas. Cada uno tiene su uso, y es importante saber la diferencia. –
Es fácil encontrar la respuesta por sí mismo: man bash
→ /\$\*
:
parámetros especiales
Los shell trata varios parámetros especialmente . Estos parámetros solo pueden ser referenciados; la asignación a ellos no está permitida.
- Se amplía a los parámetros posicionales, comenzando desde uno. Cuando la expansión se produce dentro de comillas dobles, se expande a una sola palabra con el valor de cada parámetro separado por el primer carácter de la variable especial
IFS
. Es decir,"$*"
es equivalente a"$1c$2c..."
, dondec
es el primer carácter del valor de la variableIFS
. SiIFS
está desactivado, los parámetros están separados por espacios. SiIFS
es nulo, los parámetros se unen sin separadores intermedios.
$*
se expande a todos los parámetros que se pasaron a ese script de shell.
$0
= nombre del script de shell
$1
= primer argumento
$2
= segundo argumento ... etc
$#
= número de argumentos pasados a ShellScript
http: // TLDP .org/LDP/abs/html/internalvariables.html # ARGLIST – alfasin
Todos los parámetros posicionales de la línea de comandos que llaman al script: http://tldp.org/LDP/abs/html/internalvariables.html#APPREF – GreenMatt
Los documentos basados en POSIX son particularmente útiles aquí ya que se aplican a algo más que a bash: http://pubs.opengroup.org/ onlinepubs/9699919799/utilities/V3_chap02.html # tag_18_05_02 –