কমান্ড লাইন আর্গুমেন্টগুলি সিস্টেমের কমান্ড শেল দ্বারা ব্যাখ্যার সাপেক্ষে, কমান্ডের আচরণ পরিবর্তন করে বা তাত্ক্ষণিকতার নামগুলি পরিবর্তিত প্রোগ্রামে পাস করার আগে পরিবর্তন করে।
যখন একটি আর্গুমেন্টে (যেমন এর মান হিসাবে --password
) শেলটি ব্যাখ্যা করতে পারে এমন একটি অক্ষর থাকে তখন সেগুলি হয় উদ্ধৃত করা হয় (সাধারণত উইন্ডোজে '
ইউনিক্সে বা ডাবল উদ্ধৃতিতে আবদ্ধ থাকে "
) বা পৃথকভাবে পালানো হয় (সাধারণত \
প্রতিটি মেটাচ্যাক্রাস্টারের আগে ব্যাকস্ল্যাশ সহ) ) শেল দ্বারা ব্যাখ্যা এড়ানোর জন্য।
সুনির্দিষ্ট অক্ষরগুলি সিস্টেম-নির্দিষ্ট হয়ে থাকে, তবে কয়েকটি অক্ষরের জন্য নজর রাখা উচিত:
$ & ! \ [ ] < > `
যদি সত্যিই খারাপ উদাহরণের জন্য পাসওয়ার্ডটি সেট করা থাকে pa$$word
...
mysql --password=pa$$word # does not work
mysql --password='pa$$word' # works
mysql --password=pa\$\$word # works, but slightly unclear what's going on at first glance
আরও পড়া:
আপডেট: পাসওয়ার্ডে '
একক বা "
ডাবল উদ্ধৃতি থেকে বাঁচতে আপনি হয় অগ্রণী ব্যাকস্ল্যাশ দিয়ে সেগুলি থেকে বাঁচতে পারেন, বা যদি অন্য কোনও অক্ষর না থেকে থাকে যা উদ্ধৃত করার বাছাই করা স্টাইলটি সামঞ্জস্য না করে তবে পুরো যুক্তিটি উদ্ধৃতিগুলির বিপরীত শৈলীতে আবদ্ধ করতে পারেন Update সঙ্গে.
mysql --password="like'this" # password has a single quote in the middle
mysql --password='like"this' # password with a double quote in the middle
আপনার যদি একটি একক উক্তি এবং অন্যান্য বিশেষ অক্ষরও থাকে, আপনি ব্যাকস্ল্যাশ এড়িয়ে যাওয়ার সাথে আটকে আছেন কারণ, ইউনিক্সে, ডাবল উদ্ধৃতিটি একটি কোটের তুলনায় "দুর্বল" এবং ডাবল উদ্ধৃতিতে আবদ্ধ থাকলেও বহু মেটাচারাক্টর এখনও প্রসারিত হয় তবে একক নয় কোট।
এটি মাইএসকিউএল-নির্দিষ্ট নয় তবে কমান্ড লাইন আর্গুমেন্টের সাথে যে কোনও কিছুতে প্রযোজ্য।
echo
শেলটি কীভাবে আপনার যুক্তিগুলি ব্যাখ্যা করে তা দেখতে আপনি সাধারণত কমান্ডটি ব্যবহার করতে পারেন।
$ echo foo$bar
foo # literal 'foo' plus the (empty) shell variable $bar
$ echo foo\$bar
foo$bar # backslash prevents expansion of $bar as a variable
$ echo "foo$$bar" # weaker double quote doesn't prevent expansion so
foo9691bar # the $$ expands to the unix process id (pid) of the current shell
$ echo 'foo$$bar'
foo$$bar # "stronger" single quote prevents shell expansion
$ echo "foo'bar"
foo'bar # double quote allows single quote within the literal
ফলোআপ: ব্যাশ শেল (এবং সম্ভবত কিছু অন্য) একক উদ্ধৃতিযুক্ত স্ট্রিংয়ের মধ্যে একক উদ্ধৃতিগুলি পলায়নের অনুমতি দেয় যদিও কনভেনশনটি উদ্ভট (সম্ভবত কিছু কাল-ভুলে যাওয়া সিদ্ধান্তের ভিত্তিতে এখন সময়ের স্মৃতিতে হারিয়ে গেছে):
পুরো স্ট্রিংকে একক কোটে মুড়িয়ে দেওয়ার আগে '
স্ট্রিংয়ের অভ্যন্তরে প্রতিটি প্রতিস্থাপন করুন '\''
... সুতরাং আক্ষরিক স্ট্রিংটি foo'bar
হিসাবে প্রকাশিত হয় 'foo'\''bar'
।
আমি যেমন বলেছিলাম, উদ্ভট। এটি প্রয়োজন কারণ একটি ব্যাকস্ল্যাশ একটি একক উদ্ধৃত স্ট্রিংয়ের বাইরে একটি একক উদ্ধৃতি থেকে বেরিয়ে যায়, ব্যাকস্ল্যাশ কোনও একক-উদ্ধৃত স্ট্রিংয়ের মধ্যে কিছুতেই বাঁচতে পারে না এবং একক উদ্ধৃত স্ট্রিংগুলি যতক্ষণ না অপরিবর্তিত থাকে ততক্ষণ একাধিক একক উদ্ধৃতি দ্বারা বন্ধ এবং পুনরায় খোলা যেতে পারে This হস্তক্ষেপকারী অক্ষরগুলির বিশেষ অর্থ রয়েছে। সুতরাং '\''
স্ট্রিংয়ের উদ্ধৃতি বন্ধ করে, তারপর পালানো আক্ষরিক সরবরাহ করে, তারপরে স্ট্রিংয়ের উদ্ধৃতি আবার খোলে।