Ich mache eine echo $1
, es druckt aus, was die Standard-Login-Shell verwendet wird.
Aber für echo $2
weiter bekomme ich nur eine neue Zeile. Warum das?
$ 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
Angenommen, Sie rennen
dann
quelle
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.
quelle