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?

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

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


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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.