ব্যাশে ডাবল কোট এবং একক উদ্ধৃতিতে ব্যাকটিক্স ব্যবহার করার সময় পার্থক্য


12

নিম্নোক্ত দুটি মৃত্যুদণ্ডের ফলাফল কী আলাদা? (আমার শেষ কমান্ডে ভেরিয়েবলের জন্য আমার ডাবল উক্তি প্রয়োজন)

$ sudo su -c "echo `cat /root/root_file`"
cat: /root/root_file: Permission denied
$ sudo su -c 'echo `cat /root/root_file`'
Yay, highly classified content!

উত্তর:


19

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

Https://www.gnu.org/software/bash/manual/bashref.html# ককটিংও দেখুন


6

প্রথম উদাহরণে ব্যাকটিকগুলি আপনার শেল দ্বারা মূল্যায়ন করা হয় (আপনি এবং মূল হিসাবে নয়)। দিয়ে চেষ্টা করুন

sudo su -c "echo `whoami`"

একক কোট সহ দ্বিতীয়টিতে 'পুরো স্ট্রিংটি echo `cat /root/root_file`রুট শেলটিতে চলে যায়।

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