راهنمای آموزشی اسکریپت نویسی - مقدماتی

لطفا برای بهتر دیدن صفحه از firefox استفاده کنید
Bash Guide for Beginners Machtelt Garrels

راهنمای Bash برای نوآموزان

حلقه until »
« Break و continue

تغییر مسیر I/O و حلقه‌ها

تغییر مسیر ورودی

به جای کنترل یک حلقه با بررسی نتیجه یک فرمان یا توسط ورودی کاربر، می‌توانیدفایلی را برای خواندن ورودی که حلقه را کنترل می‌کند تعیین کنید. در چنین حالاتی غالباً read دستور کنترلی است. تا موقعی که حلقه از سطرهای ورودی تغذیه می‌شود، اجرای دستورات حلقه ادامه می‌یابد. به محض اینکه سطرها خوانده شدند حلقه خارج می‌شود.

چونکه ساختار حلقه به گونه‌ای در نظر گرفته شده که یک ساختار دستور باشد( از قبیل:
‎ while TEST-COMMAND; do CONSEQUENT-COMMANDS; done‎)، تغییر مسیر بعد از جمله done صورت می‌گیرد،به طوری که به صورت زیر ترجمه می‌شود

command < file

این نوع تغییر مسیر با انواع دیگر حلقه‌ها نیز کار می‌کند.

تغییر مسیر خروجی

در مثال زیر، خروجی فرمان find به عنوان ورودی فرمان read کنترلی حلقه while به کار رفته است:

[carol@octarine ~/testdir] cat archiveoldstuff.sh
#!/bin/bash

# This script creates a subdirectory in the current directory, to which old
# files are moved.
# Might be something for cron (if slightly adapted) to execute weekly or 
# monthly.

ARCHIVENR=`date +%Y%m%d`
DESTDIR="$PWD/archive-$ARCHIVENR"

mkdir "$DESTDIR"

# using quotes to catch file names containing spaces, using read -d for more 
# fool-proof usage:
find "$PWD" -type f -a -mtime +5 | while read -d $'\000' file

do
gzip "$file"; mv "$file".gz "$DESTDIR"
echo "$file archived"
done

فایل‌ها قبل از اینکه به دایرکتوری بایگانی منقل شوند متراکم گردیده‌اند.

حلقه until »
« Break و continue
ترجمه محمود پهلوانی