در اینجا اسناد
ما به دو روش مختلف برای خروجی متن خود نگاه کردهایم، هر دو با استفاده از از دست کام-
ماندن راه سومی به نام a وجود دارد سند اینجا or اینجا اسکریپت. سند here یک شکل اضافی از تغییر مسیر ورودی/خروجی است که در آن ما بدنه ای از متن را در اسکریپت خود جاسازی می کنیم و آن را به ورودی استاندارد یک فرمان وارد می کنیم. اینطوری کار میکنه:
فرمان << رمز
متن
رمز
جایی که فرمان نام فرمانی است که ورودی استاندارد و رمز رشته ای است که برای نشان دادن انتهای متن جاسازی شده استفاده می شود. ما اسکریپت خود را برای استفاده از یک سند در اینجا تغییر می دهیم:
#! / bin / bash
# برنامه برای خروجی صفحه اطلاعات سیستم
TITLE="گزارش اطلاعات سیستم برای $HOSTNAME" CURRENT_TIME=$(تاریخ +"%x %r %Z")
TIMESTAMP="تولید $CURRENT_TIME توسط $USER"
گربه << _EOF_
$TITLE
$TITLE
$TIMESTAMP
_EOF_
#! / bin / bash
# برنامه برای خروجی صفحه اطلاعات سیستم
TITLE="گزارش اطلاعات سیستم برای $HOSTNAME" CURRENT_TIME=$(تاریخ +"%x %r %Z")
TIMESTAMP="تولید $CURRENT_TIME توسط $USER"
گربه << _EOF_
$TITLE
$TITLE
$TIMESTAMP
_EOF_
بجای استفاده از از دست، اسکریپت ما اکنون استفاده می کند گربه و یک سند اینجا رشته _EOF_ (به معنای «پایان فایل»، یک قرارداد رایج) به عنوان نشانه انتخاب شد و پایان متن جاسازی شده را نشان میدهد. توجه داشته باشید که نشانه باید به تنهایی ظاهر شود و نباید فضاهای انتهایی روی خط وجود داشته باشد.
پس مزیت استفاده از سند اینجا چیست؟ اکثراً همان است از دستبا این تفاوت که بهطور پیشفرض، نقلقولهای تکی و دوگانه در اسناد اینجا معنای خاص خود را برای پوسته از دست میدهند. در اینجا یک مثال خط فرمان است:
[me@linuxbox ~]$ foo = "چند متن"
[me@linuxbox ~]$ گربه << _EOF_
> $ foo
[me@linuxbox ~]$ foo = "چند متن"
[me@linuxbox ~]$ گربه << _EOF_
> $ foo
> "$foo"
> '$foo'
> \$foo
> _EOF_ برخی از متن "چند متن" "چند متن"
$ foo
> "$foo"
> '$foo'
> \$foo
> _EOF_ برخی از متن "چند متن" "چند متن"
$ foo
همانطور که می بینیم، پوسته به علامت های نقل قول توجهی نمی کند. با آنها به عنوان شخصیت های معمولی رفتار می کند. این به ما اجازه می دهد تا آزادانه نقل قول ها را در یک سند اینجا جاسازی کنیم. این می تواند برای برنامه گزارش ما مفید باشد.
در اینجا اسناد را می توان با هر دستوری که ورودی استاندارد را می پذیرد استفاده کرد. در این مثال، ما از یک سند here برای ارسال یک سری دستورات به آن استفاده می کنیم اف تی پی برنامه ای برای بازیابی فایل از یک سرور FTP راه دور:
#! / bin / bash
# اسکریپت برای بازیابی فایل از طریق FTP FTP_SERVER=ftp.nl.debian.org
FTP_PATH=/debian/dists/lenny/main/installer-i386/current/images/cdrom REMOTE_FILE=debian-cd_info.tar.gz
ftp -n << _EOF_ FTP_SERVER را باز کنید
کاربر ناشناس me@linuxbox سی دی $FTP_PATH
مخلوط
دریافت $REMOTE_FILE خداحافظ
_EOF_
ls -l $REMOTE_FILE
#! / bin / bash
# اسکریپت برای بازیابی فایل از طریق FTP FTP_SERVER=ftp.nl.debian.org
FTP_PATH=/debian/dists/lenny/main/installer-i386/current/images/cdrom REMOTE_FILE=debian-cd_info.tar.gz
ftp -n << _EOF_ FTP_SERVER را باز کنید
کاربر ناشناس me@linuxbox سی دی $FTP_PATH
مخلوط
دریافت $REMOTE_FILE خداحافظ
_EOF_
ls -l $REMOTE_FILE
اگر عملگر تغییر مسیر را از "<<" به "<<-" تغییر دهیم، پوسته کاراکترهای برگه اصلی در سند here را نادیده می گیرد. این به یک سند اینجا اجازه می دهد که تورفتگی داشته باشد، که می تواند خوانایی را بهبود بخشد:
#! / bin / bash
# اسکریپت برای بازیابی فایل از طریق FTP FTP_SERVER=ftp.nl.debian.org
#! / bin / bash
# اسکریپت برای بازیابی فایل از طریق FTP FTP_SERVER=ftp.nl.debian.org
FTP_PATH=/debian/dists/lenny/main/installer-i386/current/images/cdrom REMOTE_FILE=debian-cd_info.tar.gz
ftp -n <<- _EOF_ FTP_SERVER را باز کنید
کاربر ناشناس me@linuxbox سی دی $FTP_PATH
مخلوط
دریافت $REMOTE_FILE خداحافظ
_EOF_
ls -l $REMOTE_FILE
FTP_PATH=/debian/dists/lenny/main/installer-i386/current/images/cdrom REMOTE_FILE=debian-cd_info.tar.gz
ftp -n <<- _EOF_ FTP_SERVER را باز کنید
کاربر ناشناس me@linuxbox سی دی $FTP_PATH
مخلوط
دریافت $REMOTE_FILE خداحافظ
_EOF_
ls -l $REMOTE_FILE