انجمنهای فارسی اوبونتو
کمک و پشتیبانی => برنامهسازی => نویسنده: حامد سپهر در 14 تیر 1394، 04:11 بظ
-
یه کد کوچولو برای یه کاری نوشتم که میاد لیست تمام پوشه های موجود تو مسیر فعلی رو میگیره و اسمشون رو چاپ میکنه و قبل اسمشون مینویسه folder: نتیجه هم این کد شد:
for folder in $(ls -d -1 */)
do
echo "folder:" "$folder"
done
کد در حالت عادی مشکلی نداره... ولی اگه یک فولدر دراسمش فاصله وجود داشته باشه درست نتیجه نمیده. مثلا اگه اسم یه پوشه hello world باشه خروجی به این شکل میشه:
folder: hello
folder: world
که درست نیست. خودم هم تا الآن که سرچ کردم نفهمیدم باید چیکار کنم تا این مشکل حل بشه. بازم سرچ میکنم ولی منتظر راهنماییهای دوستان هم هستم ;D
-
ابتدای اسکریپتت بنویس:
IFS=$'\n'
تا فقط CR رو به عنوان جداکنندهٔ فیلد درونی بشناسه. سعی ميکنم فردا براش تو ویکی بنویسم.
-
اتفاقا اینجا هم همچین چیزی پیدا کردم: http://www.cyberciti.biz/tips/handling-filenames-with-spaces-in-bash.html
اگه دوباره محتویات IFS رو با حالت اول بر نگردونم مشکل خاصی پیش میاد؟
(خدا میدونه تا حالا چندبار مشکلاتم رو از تو cybercitiحل کردم! واقعا فوق العادست!!!!)
-
نه، حوزهٔ اثرش فقط توی همون اسکریپته