c - কমান্ড-লাইন আর্গুমেন্ট হিসাবে '#' পাস করা যায় না




bash command-line-arguments (2)

এর কারণ আপনি sh সদৃশ শেল ব্যবহার করছেন। # উদ্ধৃত করুন বা এটি ব্যবহার করে escape ব্যবহার \ এবং এটি কার্যকর হবে।

এটিকে sh মন্তব্য বলা হয়। এটি # (স্পেস-হ্যাশ) এবং এর পরে কোনও যুক্তি বাতিল করার কারণ করে। এটি সি এর মন্তব্যে একইভাবে ব্যবহৃত হয়, যেখানে এটি কোড নথিতে ব্যবহৃত হয়।

With দিয়ে শুরু হওয়া স্ট্রিংগুলিকে sh ভেরিয়েবল বলা হয় । যদি আপনি কোনও ভেরিয়েবল সেট না করে থাকেন তবে এটি খালি স্ট্রিংয়ে প্রসারিত হবে।

উদাহরণস্বরূপ, এই সমস্তগুলি আপনার অ্যাপ্লিকেশনটিতে # পাস করার বৈধ উপায় হবে:

2 4 '#' 5 6
2 4 "#" 5 6
2 4 \# 5 6

এবং এইগুলি $ দিয়ে শুরু করে একটি স্ট্রিং পাস করার বৈধ উপায় হবে:

2 4 '$var' 5 6
2 4 '$'var 5 6
2 4 \$var 5 6

দয়া করে নোট করুন যে " এর ভিতরে ভেরিয়েবলগুলি এখনও প্রসারিত।

কমান্ড-লাইন আর্গুমেন্ট হিসাবে # দিয়ে শুরু করে স্ট্রিংগুলি পাস করতে পারি না।

এখানে একটি সহজ পরীক্ষা:

#include <stdio.h>

int main(int argc, char *argv[])
{
    for( int i = 1; i < argc; i++ )
        printf("%s ", argv[i]);

    putchar('\n');

    return 0;
}

যদি আমি নিম্নলিখিত হিসাবে যুক্তিগুলি ইনপুট করি:

2 4 # 5 6

argc মান 3 এবং 6 নয়। এটি # পড়ে এবং সেখানে থামে। কেন জানি না, এবং আমি সি প্রোগ্রামিং ল্যাঙ্গুয়েজ এবং সি প্রিমার প্লাসের আমার অনুলিপিগুলিতে উত্তরটি খুঁজে পাচ্ছি না।


কমান্ড লাইন আর্গুমেন্টের মাধ্যমে মানটি পাস করার সময় আপনাকে নিম্নলিখিত নির্দেশাবলীর মধ্য দিয়ে চলতে হবে। নিম্নলিখিত বর্ণগুলি কয়েকটি প্রসঙ্গে শেল নিজেই বিশেষ অর্থ রয়েছে এবং যুক্তিতে এড়াতে হতে পারে:

` Backtick (U+0060 Grave Accent)
~ Tilde (U+007E)
! Exclamation mark (U+0021)
# Hash (U+0023 Number Sign)
$ Dollar sign (U+0024)
& Ampersand (U+0026)
* Asterisk (U+002A)
( Left Parenthesis (U+0028)
) Right parenthesis (U+0029)
 (⇥) Tab (U+0009)
{ Left brace (U+007B Left Curly Bracket)
[ Left square bracket (U+005B)
| Vertical bar (U+007C Vertical Line)
\ Backslash (U+005C Reverse Solidus)
; Semicolon (U+003B)
' Single quote / Apostrophe (U+0027)
" Double quote (U+0022)
↩ New line (U+000A)
< Less than (U+003C)
> Greater than (U+003E)
? Question mark (U+003F)
  Space (U+0020)1




command-line-arguments