"$"? (ডলার-প্রশ্ন চিহ্ন) পরিবর্তনশীল কেবল বাশ শেলের মধ্যে উপলব্ধ?


10

ইন Bashশেল, আমি মাধ্যমে কমান্ড প্রস্থান অবস্থা পেতে পারেন $?পরিবর্তনশীল:

# ps -ef | grep "haha"
root     15439 15345  0 23:02 pts/0    00:00:00 grep --color=auto haha
# echo $?
0

এটি কি কেবল বাশ শেলের মধ্যেই পাওয়া যায়? অথবা আমি অন্যান্য শাঁসেও এটি ব্যবহার করতে পারি?


8
আপনি এটি কোনও পসিক্স শেল ব্যবহার করতে পারেন, এটি বিশেষ প্যারামিটারগুলির মধ্যে একটি
কিউংলম

উত্তর:


19

$?প্রস্থান-কোড কোন শেল যে POSIX অনুসরণ সাধারণ, এবং বর্ণনা করা হয় 2.5.2 বিশেষ পরামিতি :

?
সর্বাধিক সাম্প্রতিক পাইপলাইন দশমিক প্রস্থান স্থিতি প্রসারিত ( পাইপলাইন দেখুন )।


5
কেবল পসিক্স শেলই নয়, বোর্ন শেল সহ সমস্ত বোর্নের মতো শেল (যা আমি বিশ্বাস করি এটিই এটির পরিচয় করিয়েছিল, ম্যাসি শেলটি $rআমার বিশ্বাস মতো এটি ছিল )। সুতরাং 70 এর দশকের শেষভাগে ইউনিক্স ভি 7 এর পরে সমস্ত ইউনিক্স-এর মতো সিস্টেমগুলির মধ্যে এটি বেশিরভাগ অন্যান্য শেল (সিএসএস, টিসিএসসি, ফিশ, আরসি) হিসাবে রয়েছে $status
স্টাফেন চেজেলাস

2
এবং অনেক স্ক্রিপ্টিং ভাষাসমূহ: পার্ল, রুবি, ইত্যাদি
OrangeDog

13

থমাস ডিকি যেমন বলেছিলেন, কোনও পসিক্স শেল (যেমন। বেশিরভাগই তাদের সমস্ত) থাকবে $?

এই প্রশ্নটি আমাকে কিছুটা আগ্রহী, তাই আমি যে কোনও শেলটিতে আমার হাত পেতে পারি এটি এটি পরীক্ষা করেছিলাম:

  • mksh
  • zsh
  • /bin/sh আমার স্যামসং গ্যালাক্সি এস 5 এ
  • /bin/sh আমার রাউটারে
  • tcsh
  • ksh
  • dash
  • /bin/sh 1989 বা তার থেকে আমার ভার্চুয়াল ইউনিক্স সিস্টেম ভিতে
  • cmd.exeএবং powershell.exeআমার উইন্ডোজ 10 কম্পিউটারে

এবং $?এই কিন্তু সব কাজ করেন fishএবং cmd.exe

দুটি আকর্ষণীয় জিনিস পাওয়া গেছে:

1. $?উইন্ডোজ পাওয়ারশেলে কাজ করে!

ভাল, একটি বিষয়। 0 বা একটি উচ্চ সংখ্যা ফেরার পরিবর্তে, এটি শুধু Trueএবং False

PS C:\WINDOWS\system32> echo $?
True
PS C:\WINDOWS\system32> gfdhgfhfdgfdg
gfdhgfhfdgfdg : The term 'gfdhgfhfdgfdg' is not recognized as the name of a cmdlet, ...(big long error output).....
PS C:\WINDOWS\system32> echo $?
False

2. $?শেল কাজ করে না fish

তবে, আপনি যখন $?মাছ টাইপ করেন, আপনি এই বার্তাটি পান:

~$ echo $?
$? is not the exit status. In fish, please use $status.
fish: echo $?

আমি এটি খুব বেশি ব্যবহার করি নি তবে আমি অবাক হই না, fishমনে হয় এটির নিজস্ব আকর্ষণীয় শেল ভাষা রয়েছে, যা সম্পূর্ণ bashবা যা কিছু থেকে সম্পূর্ণ আলাদা ।


বেশিরভাগ শেল (ফিশ, সিএসএস, টিসিএস, আরসি, জেডএস) ব্যবহার করে $statusযা অনেক বেশি সোজা / স্পষ্টত আইএমও। শুধুমাত্র বোর্নের মতো শেল (ইউনিক্স শেলগুলির মধ্যে) $?আফাইক ব্যবহার করে ।
স্টাফেন চেজেলাস

3
আপনি কীভাবে পড়ছেন তা কেবল নির্ভর করে। মানসিকভাবে পড়লাম $?"sh ## ঘটেছে?" এবং তার পরে, আমি এই বিশেষ পরিবর্তনশীলটির অর্থটি কখনও ভুলিনি :)

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