GNU/Linux >> Belajar Linux >  >> Linux

Apa arti dari tanda dolar ganda di bash/Makefile?

Sesuai gnu make official doc:

Referensi variabel dan fungsi dalam resep memiliki sintaks dan semantik yang identik dengan referensi di tempat lain di makefile. Mereka juga memiliki aturan kutipan yang sama:jika Anda ingin tanda dolar muncul di resep Anda, Anda harus menggandakannya ('$$'). Untuk shell seperti shell default, yang menggunakan tanda dolar untuk memasukkan variabel, penting untuk selalu diingat apakah variabel yang ingin Anda rujuk adalah variabel make (gunakan tanda dolar tunggal) atau variabel shell (gunakan tanda dua dolar).

Singkatnya:

  • variabel makefile => gunakan tanda dolar tunggal
  • variabel shell => gunakan dua tanda dolar

$$ adalah PID dari proses Anda saat ini.

$ ps -ef|grep $$
user       208465  200620  0 10:30 pts/4    00:00:00 bash

$ for number in 1 2 3 4 ; do \
    echo $$number ; \
done
208465number
208465number
208465number
208465number

Tidak langsung berlaku untuk contoh ini -- kecuali jika kode yang ditampilkan dijalankan melalui $(shell ...) bukannya menjadi aturan:

Dengan mengaktifkan perluasan sekunder, make mungkin juga menginterpretasikan dolar ganda itu sendiri pada tahap pemrosesan kedua, ketika muncul dalam daftar prasyarat. (Fase pertama:baca file, tetapkan variabel; fase kedua:temukan dan aktifkan target ketergantungan, jalankan aturan)

Ini digunakan untuk memungkinkan menentukan target ketergantungan secara dinamis, ketika variabel dengan nama target hanya tersedia nanti di file.

Lihat https://www.gnu.org/software/make/manual/html_node/Secondary-Expansion.html.


Linux
  1. Apa arti dari *nix?

  2. Apa perbedaan antara #!/usr/bin/env bash dan #!/usr/bin/bash?

  3. Apa gunanya $# di Bash

  1. Apa arti dari `! -d` dalam perintah Bash ini?

  2. Apa perintah ekspor yang seharusnya dilakukan di Linux?

  3. Apa yang dilakukan -e dalam bash shebang?

  1. apa arti 1 di akhir skrip awk

  2. Apa arti curl -k -i -X ​​di Linux?

  3. Apa variabel lingkungan XDG_VTNR?