এই প্রশ্নটি আমার আগের প্রশ্নের ধরণের সিক্যুয়েল । এই সাইটের ব্যবহারকারীরা দয়া করে আমাকে বাশ forলুপটি কীভাবে লিখতে হবে তা স্ট্রিংয়ের মানগুলিতে পুনরাবৃত্তি করতে সহায়তা করে। উদাহরণস্বরূপ, ধরুন যে একটি লুপ নিয়ন্ত্রণ ভেরিয়েবল fnameস্ট্রিংগুলির উপরে পুনরাবৃত্তি করে "a.txt" "b.txt" "c.txt"। আমি echo"হ্যাঁ!" করতে চাই কখন fnameমান "a.txt"বা "c.txt", এবং echo"না!" অন্যথায়। আমি নিম্নলিখিত বাশ শেল স্ক্রিপ্ট চেষ্টা করেছি:
#!/bin/bash
for fname in "a.txt" "b.txt" "c.txt"
do
echo $fname
if [ "$fname" = "a.txt" ] | [ "$fname" = "c.txt" ]; then
echo "yes!"
else
echo "no!"
fi
done
আমি আউটপুট প্রাপ্ত:
a.txt
না!
b.txt
না!
c.txt
হ্যাঁ!
কেন মূল্য আছে ifযখন বিবৃতি দৃশ্যত সত্য ফল দেয় ? আমি কি ভুলভাবে ব্যবহার করেছি ?fname"a.txt"|
3
ব্যাশে, 'বা' অপারেটরটি '||' (সি স্টাইল)
—
মারিয়াস কোটোফানা
আপনি
—
থোর
-oএকই মধ্যে ব্যবহার করতে পারেন [ ]।
@Thor ্যদসব
—
jw013
||এবং আলাদা [ ]উপর -oকেবল বহনযোগ্যতা কারণ [বলসিলাম 4 টার বেশি আর্গুমেন্ট সমর্থন করার জন্য নিশ্চিত নয়। অবশ্যই টার্গেট ভাষা হলে bash, কোন এক ব্যবহার করা উচিত [কোন পথে কারণ bashএর [[অনেক উপায়ে শ্রেয়।
@ jw013 ধন্যবাদ। এর মানে কি এই যে আমার
—
অ্যান্ড্রু
if [[ "$fname" = "a.txt" ]] || [[ "$fname" = "c.txt" ]]পরিবর্তে ব্যবহার করা উচিত if [ "$fname" = "a.txt" ] || [ "$fname" = "c.txt" ]?
@ অ্যান্ড্রু এটি সঠিক, যদি আপনি শেবাংকে ঘোষণা
—
jw013
bashকরছেন যেমন আপনি ইতিমধ্যে করছেন। এর একটি সুবিধা [[হ'ল এটি শব্দ বিভাজন (বিশেষ কেস) না করে তাই [[ $unquoted_var = string ]]নিরাপদ।