Sur un shell Linux, que doit faire echo $ 1?

11

Je fais un echo $1, il affiche quel est le shell de connexion par défaut utilisé.

Mais à echo $2partir de maintenant, tout ce que je reçois est une nouvelle ligne. Pourquoi donc?

Lazer
la source

Réponses:

21

$ 1 (ou $ 2, $ 3 ...) est censé être les arguments donnés à un script.

Voici un exemple de script:

#!/bin/bash

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

Et l'exemple de sortie

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
la source
1
Et $ 0 est le nom du scipt en cours d'exécution, analogue à argv.
Benjamin Bannier
4

$ 1 est l'argument passé pour le script shell.

Supposons que vous couriez

./myscript.sh hello 123 

puis

1 $ sera bonjour

2 $ sera 123

Mukesh Chapagain
la source
3

Dans votre cas, $ 1 affiche le shell de connexion par défaut utilisé car cet argument a été transmis au script qui exécute votre shell de connexion. Mais si vous écrivez et exécutez votre propre script dans la session en cours, $ 1, $ 2, ... seront des paramètres que vous enverrez à votre script.

Mikhail Chernykh
la source