Nedir $$ kabuğunda?
Bir keresinde geçici dosyaları için bir kabuk benzersiz bir dosya adı elde etmenin bir yolu çift dolar işareti ($$
) kullanmak olduğunu okuyacaksınız. Bu zaman zaman değişen bir sayı üretir... ama eğer tekrar tekrar çağırırsanız, aynı sayıda döner. (Çözüm sadece zaman kullanmak için.)
$$
aslında ne olduğunu ve benzersiz dosya adları oluşturmak için bir yol olarak önerilen olurdu neden olduğunu merak ediyorum.
CEVAP
$$
bash işlemi (PID) kimliğidir. $$
kullanarak genellikle, bir yarış durumu oluşturmak ve kabuk betiği eğer bir saldırgan tarafından altüst olmasını sağlayacaktır, çünkü kötü bir fikir değil. Bakın, örneğin, güvensiz geçici dosya oluşturulur ve güvenlik uyarılarının sorunu vardı these people.
Bunun yerine, mktemp
kullanın. Linux man page for mktemp mükemmel. İşte bazı örnek kod:
tempfoo=`basename $0`
TMPFILE=`mktemp -t ${tempfoo}` || exit 1
echo "program output" >> $TMPFILE
Çok zarif bir metin okumanın yolu c il...
ayırma ve allocWithZone arasındaki far...
Python çoklu kurucular için temiz, pyt...
5 yıldızlı reytinge göre sıralamak içi...
C , sanal bir temel sınıf nedir?...