ທີ່ນີ້ເອກະສານ
ພວກເຮົາໄດ້ເບິ່ງສອງວິທີທີ່ແຕກຕ່າງກັນຂອງການອອກຂໍ້ຄວາມຂອງພວກເຮົາ, ທັງສອງການນໍາໃຊ້ echo com-
mand. ມີວິທີທີສາມເອີ້ນວ່າ a ທີ່ນີ້ເອກະສານ or ທີ່ນີ້ script. ເອກະສານຢູ່ທີ່ນີ້ແມ່ນຮູບແບບການປ່ຽນເສັ້ນທາງ I/O ເພີ່ມເຕີມທີ່ພວກເຮົາຝັງເນື້ອໃນຂໍ້ຄວາມເຂົ້າໄປໃນສະຄິບຂອງພວກເຮົາແລະປ້ອນມັນເຂົ້າໃນການປ້ອນຂໍ້ມູນມາດຕະຖານຂອງຄໍາສັ່ງ. ມັນເຮັດວຽກແບບນີ້:
ຄໍາສັ່ງ << token
ຂໍ້ຄວາມ
token
ບ່ອນທີ່ ຄໍາສັ່ງ ແມ່ນຊື່ຂອງຄໍາສັ່ງທີ່ຍອມຮັບການປ້ອນຂໍ້ມູນມາດຕະຖານແລະ token ແມ່ນສະຕຣິງທີ່ໃຊ້ເພື່ອຊີ້ບອກຈຸດສິ້ນສຸດຂອງຂໍ້ຄວາມທີ່ຝັງໄວ້. ພວກເຮົາຈະແກ້ໄຂສະຄຣິບຂອງພວກເຮົາເພື່ອໃຊ້ເອກະສານຢູ່ທີ່ນີ້:
#! / bin / bash
# ໂປຣແກມອອກໜ້າຂໍ້ມູນລະບົບ
TITLE="ລາຍງານຂໍ້ມູນລະບົບສຳລັບ $HOSTNAME" CURRENT_TIME=$(ວັນທີ +"%x %r %Z")
TIMESTAMP="ສ້າງ $CURRENT_TIME, ໂດຍ $USER"
cat << _EOF_
$TITLE
$TITLE
$TIMESTAMP
_EOF_
#! / bin / bash
# ໂປຣແກມອອກໜ້າຂໍ້ມູນລະບົບ
TITLE="ລາຍງານຂໍ້ມູນລະບົບສຳລັບ $HOSTNAME" CURRENT_TIME=$(ວັນທີ +"%x %r %Z")
TIMESTAMP="ສ້າງ $CURRENT_TIME, ໂດຍ $USER"
cat << _EOF_
$TITLE
$TITLE
$TIMESTAMP
_EOF_
ແທນທີ່ຈະໃຊ້ echo, script ຂອງພວກເຮົາໃນປັດຈຸບັນໃຊ້ cat ແລະເອກະສານຢູ່ທີ່ນີ້. ຊ່ອຍແນ່ _EOF_ (ຫມາຍຄວາມວ່າ "ສິ້ນສຸດຂອງໄຟລ໌," ສົນທິສັນຍາທົ່ວໄປ) ຖືກເລືອກເປັນ token, ແລະຫມາຍຈຸດສິ້ນສຸດຂອງຂໍ້ຄວາມທີ່ຝັງໄວ້. ກະລຸນາຮັບຊາບວ່າໂທເຄັນຕ້ອງປາກົດຢູ່ຄົນດຽວ ແລະຈະຕ້ອງບໍ່ມີຊ່ອງຫວ່າງຢູ່ແຖວ.
ດັ່ງນັ້ນປະໂຫຍດຂອງການນໍາໃຊ້ເອກະສານຢູ່ທີ່ນີ້ແມ່ນຫຍັງ? ມັນສ່ວນຫຼາຍແມ່ນຄືກັນກັບ echoເວັ້ນເສຍແຕ່ວ່າ, ໂດຍຄ່າເລີ່ມຕົ້ນ, ວົງຢືມດຽວແລະຄູ່ພາຍໃນເອກະສານທີ່ນີ້ສູນເສຍຄວາມຫມາຍພິເສດຂອງພວກເຂົາກັບແກະ. ນີ້ແມ່ນຕົວຢ່າງເສັ້ນຄໍາສັ່ງ:
[me@linuxbox ~]$ foo="ບາງຂໍ້ຄວາມ"
[me@linuxbox ~]$ cat << _EOF_
> $foo
[me@linuxbox ~]$ foo="ບາງຂໍ້ຄວາມ"
[me@linuxbox ~]$ cat << _EOF_
> $foo
> "$foo"
> '$foo'
> \$foo
> _EOF_ ບາງຂໍ້ຄວາມ "ບາງຂໍ້ຄວາມ" 'ບາງຂໍ້ຄວາມ'
$foo
> "$foo"
> '$foo'
> \$foo
> _EOF_ ບາງຂໍ້ຄວາມ "ບາງຂໍ້ຄວາມ" 'ບາງຂໍ້ຄວາມ'
$foo
ດັ່ງທີ່ພວກເຮົາສາມາດເຫັນໄດ້, ແກະບໍ່ໄດ້ເອົາໃຈໃສ່ກັບເຄື່ອງຫມາຍວົງຢືມ. ມັນປະຕິບັດໃຫ້ເຂົາເຈົ້າເປັນລັກສະນະທໍາມະດາ. ອັນນີ້ເຮັດໃຫ້ພວກເຮົາສາມາດຝັງວົງຢືມໄດ້ຢ່າງເສລີພາຍໃນເອກະສານຢູ່ທີ່ນີ້. ນີ້ອາດຈະເປັນປະໂຫຍດສໍາລັບໂຄງການລາຍງານຂອງພວກເຮົາ.
ໃນທີ່ນີ້ເອກະສານສາມາດນໍາໃຊ້ກັບຄໍາສັ່ງໃດໆທີ່ຍອມຮັບການປ້ອນຂໍ້ມູນມາດຕະຖານ. ໃນຕົວຢ່າງນີ້, ພວກເຮົາໃຊ້ເອກະສານທີ່ນີ້ເພື່ອສົ່ງຊຸດຄໍາສັ່ງໄປຫາ ftp ໂປລແກລມໃນຄໍາສັ່ງທີ່ຈະດຶງໄຟລ໌ຈາກເຄື່ອງແມ່ຂ່າຍ 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 cd $FTP_PATH
hash
ຂໍ $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 cd $FTP_PATH
hash
ຂໍ $REMOTE_FILE ສະບາຍດີ
_EOF_
ls -l $REMOTE_FILE
ຖ້າພວກເຮົາປ່ຽນຕົວປະຕິບັດການປ່ຽນເສັ້ນທາງຈາກ “<<” ເປັນ “<<-”, ແກະຈະບໍ່ສົນໃຈຕົວອັກສອນແຖບຊັ້ນນໍາໃນເອກະສານທີ່ນີ້. ນີ້ອະນຸຍາດໃຫ້ເອກະສານຢູ່ທີ່ນີ້ຖືກຫຍໍ້ໜ້າ, ເຊິ່ງສາມາດປັບປຸງການອ່ານໄດ້:
#! / 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 cd $FTP_PATH
hash
ຂໍ $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 cd $FTP_PATH
hash
ຂໍ $REMOTE_FILE ສະບາຍດີ
_EOF_
ls -l $REMOTE_FILE