Apa arti dari $ 1 dalam bash?


27

Saya sebenarnya bermain dengan argumen dan itu terjadi. Saya hanya berpikir ingin melihat apa yang akan terjadi jika saya mengetik $$1dan saya melakukannya dan mendapatkan sesuatu di bawah.

raja@raja-BONEFISH:~$ $$1
19301: command not found

Apa maksudnya tahun 19301, apakah ia mengatakan sesuatu?

Bottom-Line: apa artinya $$1dalam bash.


1
Aduh!! hal yang sangat mudah. Saya masih memiliki banyak hal untuk dipelajari. Semua jawaban adalah super. +1 untuk semua.
rɑːdʒɑ

Jawaban:


27

$$ adalah PID (id proses) dari proses saat ini.

$$1adalah PID di atas diikuti oleh string literal 1.

Jadi ini memberitahu Anda bahwa Anda bashadalah proses dengan PID 1930.

Tapi ... trik gratis:

show() { eval echo \$$1; }
show PATH
/home/romano/bin:/usr/local/bin:/bin:/usr/bin

(Cukup berbelit-belit, bukan?)

Info lebih lanjut di TLDP .



1
Untuk sesaat saya membaca TLDP sebagai "Terlalu Panjang Tidak Pee".
Luis Alvarado

13
  • $$- pid dari shell saat ini (bukan subkulit) - lihat Apa variabel shell tanda dolar khusus?

  • $$1- pid dari shell saat ini (bukan subkulit) diikuti oleh 1.

  • $$2- pid dari shell saat ini (bukan subkulit) diikuti oleh 2.

  • $$a- pid dari shell saat ini (bukan subkulit) diikuti oleh akarakter.

  • Dan seterusnya...

Lihat output dari echo $$1.

Dan Anda mendapatkan kesalahan command not foundkarena Anda mencoba untuk mengeksekusi string yang terdiri dari digit yang jelas bukan perintah.


10

Anda telah menyatukan $$dan 1bersama - sama untuk mendapatkan PID dari shell saat ini dan 1, yaitu $$singkatan dari PID dari shell yang sedang berjalan dan 1hanya sebuah karakter, Anda bisa melakukannya $$a, $$@untuk mendapatkan PID yang digabungkan dengan karakter berikut.


6

$$ itu akan menyatakan 1930yang mana pid dari shell saat ini.

Ketika Anda mengetik $$1itu berarti pid diikuti oleh satu sehingga Anda hasilnya akan 19301.

Coba $$2hasilnya nanti19302

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.