এখানে স্ট্রিং ব্যবহার করে ব্যাশ-সি ব্যবহার করার সুবিধা কী?


11

bash -c 'some command'ওভার ব্যবহার করে কি কোনও আসল সুবিধা রয়েছে?bash <<< 'some command'

তারা একই প্রভাব অর্জন বলে মনে হচ্ছে।



হাই @ পেট্রিক বিজ্ঞপ্তির জন্য ধন্যবাদ। আমি পোস্ট করার সেরা জায়গা কোথায় তা সম্পর্কে সত্যই নিশ্চিত ছিলাম না। যেহেতু, একদিকে এটি লিনাক্স প্রশ্ন, তবে অন্যদিকে বাশ এক ধরণের স্ক্রিপ্টিং ভাষা এবং অন্য সাইটে আরও দর্শক রয়েছে। এর মতো ক্ষেত্রে, পোস্ট করার জন্য আরও উপযুক্ত জায়গাটি কোথায় হবে?
ইয়াসফ্রো

4
@ ইয়াসেফ্রো: উভয় সাইটই আইএমএইচও ঠিকঠাক হত; তবে ক্রসপোস্টিং অকল্যাণকর (আপনি উভয় সাইটের লোককে একে অপরের উত্তরের সুবিধা না দিয়েই আপনার প্রশ্নে সময় ব্যয় করতে বলছেন)।
রুখ

তখন সাইটগুলির কোনও একটি থেকে পোস্ট মুছে ফেলা কি উপযুক্ত হবে?
ইয়াসফ্রো

2
আর একটি ছোট পার্থক্য হ'ল এখানে যে bash -c '...'শেলগুলিতে হরস্ট্রিংস নেই সেগুলিতে কাজ করবে। আপনি ধরে নিচ্ছেন যে ব্যাশকে ব্যাশ শেলের মধ্যে ডাকা হবে তবে এটি সর্বদা হয় না।
জোয়েল করনেট

উত্তর:


21

bash -c 'some command'কলারের স্ট্যান্ডার্ড ইনপুটটিতে অ্যাক্সেস ধরে রাখে, সুতরাং readবা স্ট্যান্ডার্ড ইনপুট থেকে পাঠানো আদেশগুলি স্বাভাবিকভাবে কাজ করবে। bash <<< 'some command'লাইনটি প্রবেশের সাথে সেই ইনপুটটি প্রতিস্থাপন করে, তাই bash -c catএবং bash <<< catবিভিন্ন জিনিস করুন।

$ bash -c cat
abc
abc
^D
$ bash <<< cat
$

অন্যদিকে, আপনি $'...'যদি খুব সতর্ক হন তবে আপনি নিজের বৈশিষ্ট্যটি ব্যবহার করতে নিজের মানক ইনপুট সরবরাহ করতে সেই বৈশিষ্ট্যটি ব্যবহার করতে পারেন :

$ bash <<< $'read x y\nabc def ghi\necho $y'
def ghi
$

আমি এটির উপর নির্ভর করতে চাই না, তবে এটি কখনও কখনও সুবিধাজনক হতে পারে।


bash -cমঞ্জুরি দেয় আর্গুমেন্ট স্ক্রিপ্টে হস্তান্তর করা, এবং $0সেট হওয়ার:

bash -c 'some command' sh abc def

সেট হবে $1থেকে abcএবং $2থেকে defভিতরে some command


3
সিনট্যাক্স ত্রুটিগুলি কিছুটা পৃথক শব্দও তৈরি করবে। মূলত এটিরাই bash -cউল্লেখ করেছেন -c, আফাইক পুরোপুরি অর্থহীন নয়, কারণ এটি তাদের ট্র্যাক করতে সহায়তা করতে পারে। bash <<< 'script'ত্রুটিগুলি পিতামহীন স্ক্রিপ্টের মতো দেখায়; bash -c 'script'বেশী না। এমনকি আপনি তাদের লেবেল করতে পারেন: bash -c 'script' label
ডারোবার্ট

ভাল, bash <<< 'echo $1' /dev/stdin fooখুব কাজ করে এবং মুদ্রণ foo। যদিও সেটিং $0কিছুটা সীমাবদ্ধ।
ইলক্কাচু

bash <<< 'echo "$1"' /dev/stdin fooসবসময় কাজ করে না। আমি bash <<< 'echo "$1"' -s fooকাজ পেয়েছিলাম ।
জি-ম্যান
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.