প্রথম সুস্পষ্ট জিনিস আপনি অফ আর্গুমেন্ট মধ্যে শূণ্যস্থান প্রদান করা উচিত নয় [
, test
অথবা [[
:
if [ "$1" = 1 ];
বাশ-এ থাকাকালীন, ব্যবহারের [[ ]]
প্রস্তাব দেওয়া হয় কারণ এটি শর্ত বিভাজন এবং পথের নাম প্রসারণের মতো শর্তযুক্ত অভিব্যক্তির জন্য অপ্রয়োজনীয় কিছু করে না। ডাবল-কোটসের চারপাশে উদ্ধৃতি দেওয়ারও দরকার নেই। আরও পঠনযোগ্য অপারেটরও ==
ব্যবহার করা যেতে পারে।
if [[ $1 == 1 ]];
যোগ করা হয়েছে নোট: দ্বিতীয় প্রতীক এছাড়াও ভেরিয়েবল থাকে তবে উদ্ধৃত প্রয়োজনীয় হিসাবে এটি প্যাটার্ন ম্যাচিং হতে পারে যদি আপনি এটা পছন্দ স্বীকৃত অক্ষর রয়েছে *
, ?
, []
, ইত্যাদি .. তাহলে globbing বর্ধিত বা প্যাটার্ন ম্যাচিং সঙ্গে সক্রিয় করা হয় shopt -s extglob
, অন্যান্য ধরনের মত @()
, !()
ইত্যাদি নিদর্শন হিসাবে স্বীকৃত হবে। প্যাটার্ন ম্যাচিং দেখুন ।
অপারেটরগুলির মতো <
এবং >
এটি এখনও প্রয়োজনীয় হতে পারে কারণ আমি একবার একটি বাগের মুখোমুখি হয়েছিলাম যেখানে দ্বিতীয় যুক্তির উদ্ধৃতি না দেওয়ার ফলে বিভিন্ন ফলাফল হয়েছিল।
প্রথম অপারেন্ড হিসাবে, কিছুই প্রয়োগ হয় না।
এছাড়াও এই সহজ প্রকরণ বিবেচনা করুন:
case "$1" in
1)
mv -- "${@:2}" ~/lab/Sun
;;
2)
mv -- "${@:2}" ~/lab/Moon
;;
3)
mv -- "${@:2}" ~/lab/Earth
;;
esac
বা ঘনীভূত:
case "$1" in
1) mv -- "${@:2}" ~/lab/Sun ;;
2) mv -- "${@:2}" ~/lab/Moon ;;
3) mv -- "${@:2}" ~/lab/Earth ;;
esac
"${@:2}"
সাবস্ট্রিং প্রসারণ বা অ্যারে সদস্য সম্প্রসারণের একটি ফর্ম যেখানে 2
অফসেট is এটি দ্বিতীয় মান থেকে প্রসারণ শুরু করে। এটির সাথে আমাদের ব্যবহারের প্রয়োজন নাও হতে পারে shift
।
যোগ --
প্রতিরোধ mv
স্বীকৃতি ফাইলের নামের ড্যাশ (দিয়ে শুরু থেকে -
) অবৈধ অপশন হিসাবে।
$var
,$(cmd)
, এবং এমনকি`cmd`
[যা$(cmd)
পছন্দ করা উচিত])। কিছু প্রান্ত ক্ষেত্রে যেখানে আপনি না আছে উদ্ধৃত করা, কিন্তু সবসময় করছেন এটি আঘাত করা হবে না।