বাশ লাইনের সিআরএলে পরিবেশের পরিবর্তনশীল কীভাবে অন্তর্ভুক্ত করবেন?


39

ডাউনলোড সম্পূর্ণ হওয়ার পরে অবহিত করার জন্য ট্রান্সমিশন পাওয়ার চেষ্টা করছে।

এইটা কাজ করে:

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."}'

... এটি ধাক্কা দেয় $TR_TORRENT_NAMEএবং সেই পরিবর্তনশীলটির আসল সামগ্রী নয় except

আমার কিছু উদ্ধৃতি বা কিছু পালাতে হবে?

উত্তর:


58

একক-কোটের ভিতরে শেলটি কিছুই প্রসারিত করে না। পরিবর্তে এগুলিকে ডাবল-কোটের ভিতরে রাখুন:

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"'."}'

আসুন পরীক্ষা করে দেখুন কীভাবে এটি কাজ করে:

$ TR_TORRENT_NAME=MyTorrent
$ echo '{"type": "note", "title": "'"$TR_TORRENT_NAME"'", "body": "'"$TR_TORRENT_NAME completed"'."}'
{"type": "note", "title": "MyTorrent", "body": "MyTorrent completed."}

যখন শেল ভেরিয়েবল প্রদর্শিত হয়, এটি সর্বদা ডাবল-কোটের ভিতরে থাকে। ফলস্বরূপ, এটি সঠিকভাবে প্রসারিত হয়।

এর মতো উদ্ধৃতি দেওয়া কিছুটা সূক্ষ্ম। আমাদের একক-উদ্ধৃত স্ট্রিং রয়েছে যাতে অক্ষর হিসাবে ডাবল-কোটস থাকে এবং ডাবল-কোটেড স্ট্রিংয়ের পাশে থাকে। এটি আরও ভালভাবে বুঝতে, এই উদাহরণটিকে উদাহরণ হিসাবে নেওয়া যাক:

 "'"$TR_TORRENT_NAME"'"

প্রতিটি চরিত্রকে ঘুরে দেখা:

  1. "একটি আক্ষরিক ডাবল-উদ্ধৃতি অক্ষর যা একক-উদ্ধৃত স্ট্রিংয়ের অভ্যন্তরে। (সংক্ষিপ্ততার জন্য, এই স্ট্রিংয়ের শুরুটি এই টুকরোটিতে প্রদর্শিত হবে না))

  2. ' একটি একক-উদ্ধৃত স্ট্রিং বন্ধ করে।

  3. " একটি ডাবল-উদ্ধৃত স্ট্রিং খোলে।

  4. $TR_TORRENT_NAME হ'ল একটি শেল পরিবর্তনশীল যা ডাবল-কোটের ভিতরে প্রসারিত হয়।

  5. " ডাবল-উদ্ধৃত স্ট্রিং বন্ধ করে।

  6. ' একটি নতুন একক-উদ্ধৃত স্ট্রিং খোলে।

  7. " একক-উদ্ধৃত স্ট্রিংয়ের ভিতরে একটি ডাবল-কোট অক্ষর রাখে।


আপনার কি 3 এবং 5 পদক্ষেপের দরকার?
ডেভিডফ্রান্সিস

@ ডেভিডফ্রান্সিস যদি 3 এবং 5 পদক্ষেপ বাদ দেয় তবে চতুর্থ পদক্ষেপটি শব্দ বিভাজন এবং পথের নাম প্রসারণের সাপেক্ষে হয় এবং উভয়ই সমস্যার সমাধান করতে পারে। স্পষ্টভাবে শব্দ বিভাজন এবং পথের নাম প্রসার না চাইলে একটি শেল ভেরিয়েবল সর্বদা ডাবল-কোটের ভিতরে থাকা উচিত।
1024

এর জন্য ধন্যবাদ, আপনি একটি দ্রুত উদাহরণ দিতে পারেন দয়া করে? এটি আমার নিজের উদাহরণে কাজ করেছিল, এজন্যই আমি জিজ্ঞাসা করেছি, তবে সেখানে কোনও স্পেস বা জটিল কিছু ছিল না
ডেভিডফ্রান্সিস

@ ডেভিডফ্রান্সিস চেষ্টা করুন TR_TORRENT_NAME="A * B"এবং দেখুন কী ঘটে।
1024

1

ভেরিয়েবল সামগ্রীর চারপাশে উদ্ধৃতি ছাড়াই ব্যাশ লাইনের কার্লে পরিবেশের পরিবর্তনশীল অন্তর্ভুক্ত করতে, এটি আমার পক্ষে কাজ করেছে:

--header 'PRIVATE-TOKEN: '"$PRIVATE_TOKEN"''

বা শরীরের ক্ষেত্রের চারপাশে উদ্ধৃতি ছাড়াই প্রথমে বর্ণিত দৃশ্যটি ব্যবহার করে:

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"'.}'
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.