প্রিন্টেফে ড্যাশ


37

আমি ব্যাশ স্ক্রিপ্টে কিছু সুন্দর আউটপুট ফর্ম্যাট করতে প্রিন্টফ ব্যবহার করার চেষ্টা করছি

উদাহরণ:
-----------------------
| This is some output |
-----------------------

কিন্তু আমি এমন কিছু আচরণের জন্য হোঁচট খেয়েছি যা আমি বুঝতে পারি না।

$ printf "--" আমাকে ত্রুটি দেয় printf: usage: printf [-v var] format [arguments]

এবং $ printf "-stuff"ফলাফল-bash: printf: -s: invalid option

সুতরাং আপাতদৃষ্টিতে প্রিন্টফ মনে করে যে আমি না থাকাকালীন কিছু যুক্তি দেওয়ার চেষ্টা করছি।

ইতিমধ্যে, পুরোপুরি দুর্ঘটনাক্রমে, আমি এই কার্যটি খুঁজে পেয়েছি:
$ printf -- "--- this works now ----\n"আমাকে দেয়--- this works now ----

কেউ কি এই আচরণ ব্যাখ্যা করতে পারেন?


1
এছাড়াও দেখুন unix.stackexchange.com/questions/11376/…
manatwork

ইন্টিরিসেটের বাইরে, এমন কোনও বাস্তবায়ন echoকি ব্যর্থ হবে echo ------------? সর্বাধিক কেবল সমর্থন -n(কোনও পেছনের নিউলাইন নয়), -e(ব্যাকস্ল্যাশ-পলাতক অক্ষরের ব্যাখ্যা) এবং সম্ভব -E(তাদের ব্যাখ্যা করবেন না) এবং যখন অন্য বিকল্পের মতো যুক্তিগুলির মুখোমুখি হয় তখন ত্রুটিযুক্ত হন না, তাই না? (সম্পাদনা: /bin/echo--help--version
জিএনইউ'সও

উত্তর:


44

--প্রোগ্রাম যা যাই হোক না কেন অনুসরণ করা উচিত বলতে ব্যবহৃত হয় না একটি কমান্ড লাইন হিসেবে ব্যাখ্যা করা যেতে বিকল্প থেকে printf

সম্পাদনা: এইভাবে printf "--"আপনি চেষ্টা করেছেন মূলত "কোনও যুক্তি ছাড়াই প্রিন্টফ" হিসাবে এবং তাই ব্যর্থ হয়েছে।


18
অন্য কথায়, মুদ্রণ --করতে আপনি চালাতে পারেন printf -- --
l0b0

2
... এবং printf --printf
এটির

নোট যে printf -- $fmtপোর্টেবল নয়। ব্যস্তবক্সে 1.30.1 এ, printf -- '%s\n' helloফলন হয় --। আরও দেখুন: pubs.opengroup.org/onlinepubs/009695399/utilities/printf.html
কেলভিন

25

-- বিকল্প হিসাবে ব্যাখ্যা করা হচ্ছে (এই ক্ষেত্রে, কোনও বিকল্প নেই বলে বোঝাতে)।

খারাপ ব্যাখ্যা রোধ করতে ব্যবহার করার সময় একটি ফর্ম্যাট স্ট্রিং সর্বদা অন্তর্ভুক্ত করা উচিত printf। আপনার বিশেষ ক্ষেত্রে:

printf '%s\n' '-----------------------'

আপনি যখন সিকোয়েন্স দিয়ে এটি করার দরকার তখন কী হবে? printf '-%.0s' {1..54}
কডেনিনজা

2
@ কোডেনিনজা তারপরে আপনি আসলে :-) ব্যবহার করতে চান--printf -- '-%.0s' {1..54}
ক্রিস ডাউন

4

প্রিন্টফ বিল্টিন এবং / ইউএসআর / বিন / প্রিন্টফের মধ্যে পার্থক্য রয়েছে, দ্বিতীয়টি বিরক্তিকর ত্রুটিগুলি ছাড়াই "আপনি কী বোঝাতে চান" তা করেন।

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