বাশ ফাংশনের অভ্যন্তরে কীভাবে হেরডোক ব্যবহার করবেন?


12

বাশ ফাংশনের অভ্যন্তরে কি হেরডোক প্রবেশ করা সম্ভব ?

নীচের তুচ্ছ নমুনা একটি ত্রুটির ফলাফল: ./heredoc_in_function.sh: 10: Syntax error: end of file unexpected (expecting "}")

#!/bin/sh

my_function () {
cat <<HEREDOC
heredoc contents
HEREDOC
}

my_function

পরিবেশ:

  • উবুন্টু 11.04 (জিএনইউ / লিনাক্স 2.6.38-8-সার্ভার x86_64)
  • জিএনইউ বাশ, সংস্করণ ৪.২.৮ (১) -আর দয়া করে (x86_64-pc-linux-gnu)

আমার ধারণা ছিল যে হেরডোক পার্ল জিনিস a বিশ্বাস করার কোনও কারণ কি এটি বেস এ কাজ করবে?
jdw

@jdw, এখানে ডকগুলি বাশ সহ অনেকগুলি ভাষায় উপস্থিত রয়েছে।
জোরডাচি

আমি এখন এটি দেখতে। কুল।
jdw

উত্তর:


10

আপনার কোডটি আমার কাছে ভাল লাগছিল, তাই আমি এটির জন্য লাইনটি অনুলিপি করেছিলাম এবং এটি আমার পক্ষে কাজ করেছে:

  • ওএসএক্স 10.7, ব্যাশ 3.2.48 (1) -রিলেজ (x86_64-আপেল-ডারউইন 11)।
  • উবুন্টু 10.04.3, বাশ 4.1.5 (1) -রিলেজ (x86_64-pc-linux-gnu)

আপনি কী অনুপস্থিত বা ফাঁকা স্থান / ট্যাব / ইত্যাদি যুক্ত করছেন না তা নিশ্চিত করার জন্য আপনার হাতে ফাইলটি পুনরায় টাইপ করা সম্ভব?

এছাড়াও, আপনি এটি কার্যকর করছেন? আমি একটি chmod +x test.shএবং তারপর./test.sh

সম্পাদনা: আমি যখন ক্লোজিং হারডোকের সাথে লাইনের শুরুতে একটি স্থান যুক্ত করেছি তখন আমি আপনার মতো একই ত্রুটি পেয়েছি।

আরও দ্রষ্টব্য: বন্ধের পিছনে একটি পিছনের স্থানও এর HEREDOCকারণ হতে পারে


1
অদ্ভুত, এটি এখন কাজ করে ... ভিম রঙের সিনট্যাক্স হাইলাইট করার আগে এইচআরইডোককে স্বীকৃতি দেওয়া হয়েছিল (আপনি যদি ক্লোজিং হারডোকের আগে সেই জায়গাটি যুক্ত করেন না তবে) আমি কেবল একটি বাহ্যিক ফাইল ব্যবহারের জন্য মূল স্ক্রিপ্টটি সংশোধন করেছি, তাই আমি নিশ্চিত নই কি ভুল ছিল. এটি হেরডোকগুলির সাথে আরও অনেক সুবিধাজনক হবে যদিও!
লেফটিয়াম

1
প্রকৃতপক্ষে! আমি আমাকে কিছু বংশধরদের ভালবাসি।
ডেভিড

1
অতিরিক্তভাবে: সমাপনের পিছনে একটি পিছনের স্থানও এর HEREDOCকারণ হতে পারে (এই ধরণের ত্রুটিগুলি ট্র্যাক করা সত্যিই শক্ত
s
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.