আপনি কী শেলটি ব্যবহারের পরিকল্পনা করছেন তা উল্লেখ করবেন না, তাই আমি বাশ ধরে নেব, যদিও এটি শেলগুলি জুড়ে বেশ মানসম্পন্ন জিনিস।
ফাইল আর্গুমেন্ট
ভেরিয়েবলগুলির মাধ্যমে আর্গুমেন্টগুলি অ্যাক্সেস করা যায় $1
- $n
( $0
প্রোগ্রামটি চালানোর জন্য ব্যবহৃত আদেশটি প্রদান করে)। বলুন আমার কাছে একটি স্ক্রিপ্ট রয়েছে যা কেবলমাত্র cat
তাদের মধ্যে একটি ডিলিমিটারযুক্ত ফাইলের সংখ্যা বেরিয়েছে:
#!/usr/bin/env bash
#
# Parameters:
# 1: string delimiter between arguments 2-n
# 2-n: file(s) to cat out
for arg in ${@:2} # $@ is the array of arguments, ${@:2} slices it starting at 2.
do
cat $arg
echo $1
done
এই ক্ষেত্রে, আমরা বিড়ালের কাছে একটি ফাইলের নাম দিয়ে যাচ্ছি। তবে, আপনি যদি ফাইলটিতে ডেটা পরিবর্তন করতে চান (স্পষ্টভাবে এটি লিখিত এবং পুনরায় লেখা না করে), আপনি ফাইলের বিষয়বস্তুগুলি একটি ভেরিয়েবলের মধ্যেও সংরক্ষণ করতে পারেন:
file_contents=$(cat $filename)
[...do some stuff...]
echo $file_contents >> $new_filename
স্টিডিন থেকে পড়ুন
স্টাডিনের কাছ থেকে পড়া হিসাবে, বেশিরভাগ শেলের একটি সুন্দর স্ট্যান্ডার্ড read
বিল্টিন রয়েছে যদিও প্রম্প্টগুলি কীভাবে নির্দিষ্ট করা হয় তার মধ্যে পার্থক্য রয়েছে (খুব কমপক্ষে)।
ব্যাশ builtins man পৃষ্ঠা একটি চমত্কার সংক্ষিপ্ত ব্যাখ্যা করেছেন read
, কিন্তু আমি পছন্দ ব্যাশ হ্যাকাররা পাতা।
কেবল:
read var_name
একাধিক চলক
একাধিক ভেরিয়েবল সেট করতে, কেবলমাত্র একাধিক প্যারামিটারের নাম সরবরাহ করুন read
:
read var1 var2 var3
read
তারপরে স্টিডিন থেকে প্রতিটি ভেরিয়েবলের একটি শব্দ রাখবে এবং বাকী সমস্ত শব্দকে শেষ ভেরিয়েবলের মধ্যে ফেলে দেবে।
λ read var1 var2 var3
thing1 thing2 thing3 thing4 thing5
λ echo $var1; echo $var2; echo $var3
thing1
thing2
thing3 thing4 thing5
যদি ভেরিয়েবলের চেয়ে কম শব্দ প্রবেশ করানো হয়, তবে বাকী ভেরিয়েবলগুলি খালি থাকবে (এমনকি পূর্বে সেট করা থাকলেও):
λ read var1 var2 var3
thing1 thing2
λ echo $var1; echo $var2; echo $var3
thing1
thing2
# Empty line
অনুরোধ জানানো
আমি -p
প্রায়শই প্রম্পটের জন্য পতাকা ব্যবহার করি :
read -p "Enter filename: " filename
দ্রষ্টব্য: জেডএসএইচ এবং কেএসএইচ (এবং সম্ভবত অন্যরা) প্রম্পটের জন্য আলাদা সিনট্যাক্স ব্যবহার করে:
read "filename?Enter filename: " # Everything following the '?' is the prompt
ডিফল্ট মান
এটি সত্যই কোনও read
কৌশল নয়, তবে আমি এটির সাথে মিলিয়ে অনেক ব্যবহার করি read
। উদাহরণ স্বরূপ:
read -p "Y/[N]: " reply
reply=${reply:-N}
মূলত, চলক (উত্তর) উপস্থিত থাকলে নিজেই ফিরে আসুন, তবে খালি থাকলে নীচের প্যারামিটারটি ("এন") ফিরিয়ে দিন।