Robię a echo $1
, wypisuje domyślną używaną powłokę logowania.
Ale echo $2
odtąd wszystko, co otrzymuję, to nowa linia. Dlaczego?
1 $ (lub 2 $, 3 $ ...) ma być argumentami podanymi dla jakiegoś skryptu.
Oto przykładowy skrypt:
#!/bin/bash
echo "\$1 is now $1"
echo "\$2 is now $2"
echo "\$3 is now $3"
I przykładowy wynik
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
Załóżmy, że biegniesz
następnie
źródło
W twoim przypadku $ 1 drukuje domyślną powłokę logowania, ponieważ ten argument został przekazany do skryptu, który uruchamia powłokę logowania. Ale jeśli napiszesz i uruchomisz własny skrypt w bieżącej sesji, 1 $, 2 $ ... będą parametrami, które wyślesz do skryptu.
źródło