ব্যাশে কোনও HEREDOC এ ভেরিয়েবল কীভাবে পাস করবেন?


16

আমি এরকম কিছু করতে চাই:

$ NAME=John
$ cat << '==end' > test
My name is $NAME
==end

$ cat test
My name is John

কোন ধারনা?

উত্তর:


24
cat <<EOF > test
My name is $NAME
EOF

অথবা এমনকি

cat <<==end > test
My name is $NAME
==end

আমার জন্য কাজ করেছেন।

দেখে মনে হচ্ছে আপনি যখন ভেরিয়েবলটি ==endনেন তখন 'বিকল্প হয় না।

আহ, এটি ম্যান পেজে রয়েছে (দেখুন 3..6..6):

এখানে-নথির বিন্যাসটি হ'ল:

      <<[-]word
              here-document
      delimiter

কোনও পরামিতি সম্প্রসারণ, কমান্ড প্রতিস্থাপন, গাণিতিক সম্প্রসারণ, বা পথের নাম সম্প্রসারণ শব্দের উপর সঞ্চালিত হয় না । যদি শব্দের কোনও অক্ষর উদ্ধৃত হয় তবে ডিলিমিটার শব্দের উপর উদ্ধৃতি অপসারণের ফলাফল এবং এখানে-নথির লাইনগুলি প্রসারিত হয় না। যদি শব্দটি উদ্ধৃত না করা হয় তবে এখানে-নথির সমস্ত লাইন প্যারামিটার সম্প্রসারণ, কমান্ড প্রতিস্থাপন এবং পাটিগণিতের বিস্তারের দ্বারা সাপেক্ষ। [...]


আপনি ডাবল-কোট ( cat << "==end" > test) ব্যবহার করতে পারেন , তবে হার্ড-কোটগুলি প্রকৃতপক্ষে প্রতিস্থাপনকে প্রতিরোধ করে।
মাদুর
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.