En un shell de Linux, ¿qué se supone que debe hacer echo $ 1?

11

Hago un echo $1, imprime cuál es el shell de inicio de sesión predeterminado utilizado.

Pero en echo $2adelante, todo lo que obtengo es una nueva línea. ¿Porqué es eso?

Lazer
fuente

Respuestas:

21

Se supone que $ 1 (o $ 2, $ 3 ...) son los argumentos dados a algún script.

Aquí hay un script de ejemplo:

#!/bin/bash

echo "\$1 is now $1"
echo "\$2 is now $2"
echo "\$3 is now $3"

Y el ejemplo de salida

jaba@lappy:/tmp$ ./example.sh 
$1 is now 
$2 is now 
$3 is now 
jaba@lappy:/tmp$ ./example.sh 1 2 3
$1 is now 1
$2 is now 2
$3 is now 3
Janne Pikkarainen
fuente
1
Y $ 0 es el nombre del scipt que se está ejecutando, análogo a argv.
Benjamin Bannier
4

$ 1 es el argumento pasado para el script de shell.

Supongamos que corres

./myscript.sh hello 123 

entonces

$ 1 será hola

$ 2 serán 123

Mukesh Chapagain
fuente
3

En su caso, $ 1 imprime el shell de inicio de sesión predeterminado utilizado porque este argumento se pasó al script que ejecuta su shell de inicio de sesión. Pero si va a escribir y ejecutar su propio script en la sesión actual, $ 1, $ 2, ... serán los parámetros que envíe a su script.

Mikhail Chernykh
fuente