Su una shell Linux, cosa dovrebbe fare echo $ 1?


11

Faccio un echo $1, stampa qual è la shell di accesso predefinita utilizzata.

Ma per il echo $2resto, tutto ciò che ottengo è una nuova riga. Perché?

Risposte:


21

$ 1 (o $ 2, $ 3 ...) dovrebbero essere gli argomenti dati ad alcuni script.

Ecco uno script di esempio:

#!/bin/bash

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

E l'output di esempio

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

1
E $ 0 è il nome dello script che viene eseguito, analogo ad argv.
Benjamin Bannier,

4

$ 1 è l'argomento passato per lo script di shell.

Supponiamo che tu corra

./myscript.sh hello 123 

poi

$ 1 saranno ciao

$ 2 saranno 123


3

Nel tuo caso $ 1 stampa la shell di accesso predefinita utilizzata perché questo argomento è stato passato allo script che esegue la shell di accesso. Ma se scriverai ed eseguirai il tuo script nella sessione corrente, $ 1, $ 2, ... saranno parametri che invierai al tuo script.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.