Pada shell Linux, apa yang seharusnya dilakukan oleh echo $ 1?

11

Saya melakukan echo $1, itu mencetak apa shell login default yang digunakan.

Tapi untuk echo $2selanjutnya, yang saya dapatkan hanyalah baris baru. Mengapa demikian?

Lazer
sumber

Jawaban:

21

$ 1 (atau $ 2, $ 3 ...) seharusnya menjadi argumen yang diberikan kepada beberapa skrip.

Berikut ini contoh skrip:

#!/bin/bash

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

Dan contoh outputnya

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
sumber
1
Dan $ 0 adalah nama skrip yang dieksekusi, analog dengan argv.
Benjamin Bannier
4

$ 1 adalah argumen yang disetujui untuk skrip shell.

Misalkan, Anda lari

./myscript.sh hello 123 

kemudian

$ 1 akan menjadi halo

$ 2 akan menjadi 123

Mukesh Chapagain
sumber
3

Dalam kasus Anda $ 1 mencetak shell login default yang digunakan karena argumen ini diteruskan ke skrip yang menjalankan shell login Anda. Tetapi jika Anda akan menulis dan menjalankan skrip Anda sendiri di sesi saat ini, $ 1, $ 2, ... akan menjadi parameter yang Anda kirim ke skrip Anda.

Mikhail Chernykh
sumber