Di dalam tanda kutip tunggal, shell tidak memperluas apa pun. Tempatkan mereka di dalam tanda kutip ganda sebagai gantinya:
curl -u <my-api-token>: \
-X POST https://api.pushbullet.com/v2/pushes \
--header 'Content-Type: application/json' \
--data-binary '{"type": "note", "title": "'"$TR_TORRENT_NAME"'", \
"body": "'"$TR_TORRENT_NAME completed"'."}'
Mari kita periksa bagaimana ini bekerja dengan melihat:
$ TR_TORRENT_NAME=MyTorrent
$ echo '{"type": "note", "title": "'"$TR_TORRENT_NAME"'", "body": "'"$TR_TORRENT_NAME completed"'."}'
{"type": "note", "title": "MyTorrent", "body": "MyTorrent completed."}
Ketika variabel shell muncul, itu selalu di dalam tanda kutip ganda. Akibatnya, itu diperluas dengan benar.
Mengutip seperti ini agak halus. Kami memiliki string dengan kutip tunggal yang berisi tanda kutip ganda sebagai karakter dan berada di sebelah string yang dikutip ganda. Untuk memahami ini dengan lebih baik, mari kita ambil fragmen ini sebagai contoh:
"'"$TR_TORRENT_NAME"'"
Mengambil setiap karakter secara bergantian:
"
adalah karakter kutipan ganda harfiah yang ada di dalam string yang dikutip tunggal. (Untuk singkatnya, awal string ini tidak ditampilkan dalam fragmen ini.)
'
menutup string yang dikutip tunggal.
"
membuka string yang dikutip ganda.
$TR_TORRENT_NAME
adalah variabel shell yang diperluas di dalam tanda kutip ganda.
"
menutup string yang dikutip ganda.
'
membuka string baru yang dikutip tunggal.
"
menempatkan karakter tanda kutip ganda di dalam string tanda kutip tunggal.
TR_TORRENT_NAME="A * B"
dan lihat apa yang terjadi.Untuk memasukkan variabel lingkungan dalam ikal garis bash tanpa tanda kutip di sekitar konten variabel, ini berhasil bagi saya:
Atau menggunakan skenario yang pertama kali dijelaskan tanpa tanda kutip di sekitar bidang tubuh:
sumber