হেরডোক চরিত্রে আপনি কীভাবে পালাতে পারেন?


22

আমি আমার বংশের ভিতরে ভেরিয়েবলগুলি প্রতিস্থাপনের চেষ্টা থেকে বাধা দেওয়ার চেষ্টা করে বাশ স্ক্রিপ্ট নিয়ে কাজ করছি। কীভাবে একটি এরিডোক সেট করবেন) ভেরিয়েবলের নামগুলি পার্স করার পরিবর্তে বা এটিকে বি ছেড়ে দেওয়ার পরিবর্তে) খালি পুরো স্ট্রিংটি ফিরিয়ে আনা হবে?

cat > /etc/nginx/sites-available/default_php <<END
server {
    listen 80 default;
    server_name _;
    root /var/www/$host; <--- $host is a problem child
}
END

যেমনটি, আমি যখন এটি কোনও ফাইলে ইনজেকশনের কাজ শেষ করি তখন আমার এই বাকীটি থাকে:

server {
    listen 80 default;
    server_name _;
    root /var/www/;
}

উত্তর:


33

থেকে bash(1)মানুষ পৃষ্ঠা:

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

cat > /etc/nginx/sites-available/default_php <<"END"

3
+1 "সীমাবদ্ধতার স্ট্রিং" এড়িয়ে যাওয়াও ( \END) কাজ করে । এছাড়াও দেখুন tldp.org/LDP/abs/html/here-docs.html#EX71C
জন ম্যাকার্থি

একক উদ্ধৃতিগুলিও কাজ করে
জোও কোস্টা

একই প্রক্রিয়াটি কর্ন শেল (ksh) এর জন্য কাজ করে।
jhfrontz

19

কেবল ব্যাকস্ল্যাশ দিয়ে:

cat > /tmp/boeboe <<END
server {
    listen 80 default;
    server_name _;
    root /var/www/\$host';
}
END

আপনি কি জানেন যে কীভাবে প্রতিটি একের ছাড়াই চলক মানগুলির ইনজেকশন অক্ষম করতে হয়?
জিওনক্রস

2
ইগনাসিও যা বলেছিলেন, তবে আমি তা জানতাম না :)
অর্ধগঙ্গ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.