আমার কাছে ভেরিয়েবল ভেরিয়েবল রয়েছে যা একটি ডিরেক্টরিতে ফাইলের তালিকা সঞ্চয় করে। আমি সমস্ত ফাইল লুপ করি এবং যদি আমি কোনও ডিরেক্টরি পাই তবে আমি স্ক্রিনে "ডিরেক্টরি" আউটপুট পাই। নীচে কোড:
var=$(ls dir)
for file in $var; do
if [ -d $dir/$file ]; then
echo "Directory"
fi
done
আমার 2 টি প্রশ্ন রয়েছে:
1 ম- আমি এটি একটি ফাংশনের অভ্যন্তরে করছি এবং আমি ফাইলের ভেরিয়েবল স্থানীয় থাকতে চাই যাতে আমার ফাংশনটি শেষ হয়ে গেলে আমি এতে অ্যাক্সেস না পাই। আমি কীভাবে সেই পরিবর্তনশীল স্থানীয় সেট করতে পারি? আমি করতে পারি না for local file in $var;
এবং লুপের আগে-ফাইলটি ঘোষণা করতে পারি না।
২ য়- $(ls dir)
নামের ভিতরে একটি স্থান থাকা কোনও ফাইল থাকাতে আমার লুপ কাজ করে না। উদাহরণস্বরূপ যদি $dir
3 ফাইল, ফাইল 1 ফাইল 2 এবং ফাইল 3 থাকে $var
তবে কেবল ফাইল 1 এবং ফাইল 3 কে আসল ফাইল হিসাবে ধরে রাখতে পারে তবে ফাইল 2 কাজ করবে না কারণ এটি ফাইল এবং 2 এ পৃথক করবে space তাদের নামে?
ls -Q dir
। এটি প্রতিটি ফাইলের নামের চারপাশে উদ্ধৃতি দেবে। এই সমস্যাটি কেন লোকেরা ls
আউটপুট পার্সিং এড়াতে এবং পরিবর্তে ব্যবহারের পরামর্শ দেওয়া হয় তার একটি অংশ find
।
"$file"
। আরও জটিল পরিস্থিতিতে আপনাকে ব্যবহার করতে হতে পারে$"$file"
।