انجمن‌های فارسی اوبونتو

کمک و پشتیبانی => برنامه‌سازی => نویسنده: حامد سپهر در 14 تیر 1394، 04:11 ب‌ظ

عنوان: مشکل در متغیر دارای محتوای اسپیس دار در بش (حل شد)
ارسال شده توسط: حامد سپهر در 14 تیر 1394، 04:11 ب‌ظ
یه کد کوچولو برای یه کاری نوشتم که میاد لیست تمام پوشه های موجود تو مسیر فعلی رو میگیره و اسمشون رو چاپ میکنه و قبل اسمشون مینویسه folder: نتیجه هم این کد شد:

for folder in $(ls -d -1 */)
do
echo "folder:" "$folder"
done

کد در حالت عادی مشکلی نداره... ولی اگه یک فولدر دراسمش فاصله وجود داشته باشه درست نتیجه نمیده. مثلا اگه اسم یه پوشه hello world باشه خروجی به این شکل میشه:

folder: hello
folder: world

که درست نیست. خودم هم تا الآن که سرچ کردم نفهمیدم باید چیکار کنم تا این مشکل حل بشه. بازم سرچ میکنم ولی منتظر راهنمایی‌های دوستان هم هستم  ;D
عنوان: پاسخ : مشکل در متغیر دارای محتوای اسپیس دار در بش
ارسال شده توسط: دانیال بهزادی در 14 تیر 1394، 09:34 ب‌ظ
ابتدای اسکریپتت بنویس:
IFS=$'\n'تا فقط CR رو به عنوان جداکنندهٔ فیلد درونی بشناسه. سعی مي‌کنم فردا براش تو ویکی بنویسم.
عنوان: پاسخ : مشکل در متغیر دارای محتوای اسپیس دار در بش
ارسال شده توسط: حامد سپهر در 14 تیر 1394، 09:54 ب‌ظ
اتفاقا اینجا هم همچین چیزی پیدا کردم: http://www.cyberciti.biz/tips/handling-filenames-with-spaces-in-bash.html

اگه دوباره محتویات IFS رو با حالت اول بر نگردونم مشکل خاصی پیش میاد؟

(خدا میدونه تا حالا چندبار مشکلاتم رو از تو cyberciti‌حل کردم! واقعا فوق العادست!!!!)
عنوان: پاسخ : مشکل در متغیر دارای محتوای اسپیس دار در بش
ارسال شده توسط: دانیال بهزادی در 15 تیر 1394، 12:37 ق‌ظ
نه، حوزهٔ اثرش فقط توی همون اسکریپته