Was soll Echo $ 1 auf einer Linux-Shell tun?

11

Ich mache eine echo $1, es druckt aus, was die Standard-Login-Shell verwendet wird.

Aber für echo $2weiter bekomme ich nur eine neue Zeile. Warum das?

Laser
quelle

Antworten:

21

$ 1 (oder $ 2, $ 3 ...) sollen die Argumente sein, die einem Skript gegeben werden.

Hier ist ein Beispielskript:

#!/bin/bash

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

Und die Beispielausgabe

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
quelle
1
Und $ 0 ist der Name des ausgeführten Scipt, analog zu argv.
Benjamin Bannier
4

$ 1 ist das Argument, das für das Shell-Skript übergeben wurde.

Angenommen, Sie rennen

./myscript.sh hello 123 

dann

$ 1 wird hallo sein

$ 2 werden 123 sein

Mukesh Chapagain
quelle
3

In Ihrem Fall gibt $ 1 die Standard-Anmeldeshell aus, die verwendet wird, weil dieses Argument an ein Skript übergeben wurde, das Ihre Anmeldeshell ausführt. Wenn Sie jedoch in der aktuellen Sitzung ein eigenes Skript schreiben und ausführen, sind $ 1, $ 2, ... Parameter, die Sie an Ihr Skript senden.

Mikhail Chernykh
quelle