Co w przypadku powłoki Linux ma wykonać echo 1 $?


11

Robię a echo $1, wypisuje domyślną używaną powłokę logowania.

Ale echo $2odtąd wszystko, co otrzymuję, to nowa linia. Dlaczego?

Odpowiedzi:


21

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

1
A $ 0 to nazwa wykonywanego scipt, analogicznie do argv.
Benjamin Bannier

4

1 $ jest argumentem przekazywanym za skrypt powłoki.

Załóżmy, że biegniesz

./myscript.sh hello 123 

następnie

1 $ będzie cześć

2 USD wyniesie 123


3

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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.