2010-10-10 16 views
58

Creo que el identificador [email protected] en un script de shell es una matriz de todos los argumentos dados al script. ¿Es esto cierto?

Lo pregunto porque normalmente uso los motores de búsqueda para recopilar información, pero no puedo buscar en Google [email protected] y me he vuelto demasiado personalizado para que me sirvan todo fácilmente.

+3

[Puede buscar ahora] (http://symbolhound.com/?q=bash+%24%40). – l0b0

+4

Debería canalizar cosas como 'man bash' en grep con el argumento -C establecido en algo razonable, es una habilidad realmente útil – djdanlib

+0

La pregunta relacionada (que esta pregunta es un duplicado) fue hecha 2 años después de esta pregunta ... ¿No debería esa pregunta ser un duplicado de esta pregunta y no al revés? – mgarey

Respuesta

55

Sí. Por favor, vea la man page of bash (lo primero que vas a) en Parámetros especiales

parámetros especiales

La cáscara trata los diversos parámetros de forma especial. 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 ocurre entre 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...", donde c es el primer carácter del valor de la variable IFS. Si IFS no está configurado, los parámetros están separados por espacios. Si IFS es nulo, los parámetros se unen sin separadores intermedios.

@ Se amplía a los parámetros posicionales, comenzando desde uno. Cuando la expansión ocurre entre comillas dobles, cada parámetro se expande a una palabra separada. Es decir, "[email protected]" es equivalente a "$1""$2" ... Si la expansión de comillas dobles se produce dentro de una palabra, la expansión del primer parámetro se combina con la parte inicial de la palabra original, y la expansión del último parámetro se combina con la última parte de la palabra original. Cuando no hay parámetros posicionales, "[email protected]" y [email protected] se expanden a nada (es decir, se eliminan).

+27

oh chico, está bien que solo tenga 5000 líneas;) – vecvan

+8

Como djanlib dijo: use algo como 'man bash | grep -C2 '$ @' ' – cmbuckley

+42

@vecvan número de preguntas antes de leer man bash: 1 ... número de preguntas después de leer man bash: 12,031 – FloatingRock