OnWorks Linux ແລະ Windows Online WorkStations

Logo

ໂຮດຕິ້ງອອນໄລນ໌ຟຣີສໍາລັບ WorkStations

<Previous | ເນື້ອໃນ | ຕໍ່ໄປ>

ຖ້າທ່ານຕ້ອງການ, prompts ສາມາດປະຕິບັດ shell scripts ແລະປະຕິບັດຕົວທີ່ແຕກຕ່າງກັນພາຍໃຕ້ເງື່ອນໄຂທີ່ແຕກຕ່າງກັນ. ເຈົ້າສາມາດເປີດສຽງໄດ້ທຸກຄັ້ງທີ່ທ່ານອອກຄຳສັ່ງ, ເຖິງແມ່ນວ່າມັນຈະໜ້າເບື່ອໃນໄວໆນີ້. ຂໍ້ມູນເພີ່ມເຕີມສາມາດພົບໄດ້ໃນ Bash-Prompt HOWTO.


ຮູບພາບເລັກນ້ອຍ

7.2.5. ສະຄຣິບ Shell


7.2.5.1. ອັກສອນແມ່ນຫຍັງ?


Shell script ແມ່ນ, ດັ່ງທີ່ພວກເຮົາໄດ້ເຫັນໃນຕົວຢ່າງການຕັ້ງຄ່າ shell, ໄຟລ໌ຂໍ້ຄວາມທີ່ມີຄໍາສັ່ງ shell. ເມື່ອໄຟລ໌ດັ່ງກ່າວຖືກໃຊ້ເປັນການໂຕ້ຖຽງທີ່ບໍ່ແມ່ນທາງເລືອກທໍາອິດເມື່ອເອີ້ນ Bash, ແລະບໍ່ແມ່ນການໂຕ້ຖຽງ. -c neither -s ທາງເລືອກແມ່ນສະຫນອງໃຫ້, Bash ອ່ານແລະປະຕິບັດຄໍາສັ່ງຈາກໄຟລ໌, ຫຼັງຈາກນັ້ນອອກ. ຮູບແບບການດໍາເນີນການນີ້ສ້າງ a

ແກະທີ່ບໍ່ມີການໂຕ້ຕອບ. ເມື່ອ Bash ແລ່ນ Shell script, ມັນກໍານົດພາລາມິເຕີພິເສດ 0 ກັບຊື່ຂອງໄຟລ໌, ແທນທີ່ຈະເປັນຊື່ຂອງແກະ, ແລະຕົວກໍານົດການຕໍາແຫນ່ງ (ທຸກສິ່ງທຸກຢ່າງຕາມຊື່ຂອງສະຄິບ) ຖືກກໍານົດເປັນ arguments ທີ່ຍັງເຫຼືອ, ຖ້າມີໃຫ້. ຖ້າບໍ່ມີການສະຫນອງການໂຕ້ຖຽງເພີ່ມເຕີມ, ຕົວກໍານົດການຕໍາແຫນ່ງແມ່ນບໍ່ໄດ້ຕັ້ງ.


Shell script ອາດຈະຖືກເຮັດໃຫ້ສາມາດປະຕິບັດໄດ້ໂດຍການໃຊ້ chmod ຄໍາສັ່ງທີ່ຈະເປີດໃຊ້ bit ປະຕິບັດ. ເມື່ອ Bash ຊອກຫາໄຟລ໌ດັ່ງກ່າວໃນຂະນະທີ່ຊອກຫາ PATH ສໍາລັບຄໍາສັ່ງ, ມັນ spawns sub-shell ເພື່ອປະຕິບັດມັນ. ໃນຄໍາສັບຕ່າງໆອື່ນໆ, ການປະຕິບັດ


ຊື່​ເອ​ກະ​ສານ ການໂຕ້ຖຽງ


ເທົ່າກັບການປະຕິບັດ


bash ຊື່ໄຟລ໌ ARGUMENTS


ຖ້າ "filename" ເປັນ script shell ທີ່ສາມາດປະຕິບັດໄດ້. ເປືອກຍ່ອຍນີ້ reinitializes ຕົວຂອງມັນເອງ, ດັ່ງນັ້ນຜົນກະທົບແມ່ນຄືກັບວ່າແກະໃຫມ່ໄດ້ຖືກເອີ້ນໃຫ້ຕີຄວາມຫມາຍຂອງສະຄິບ, ຍົກເວັ້ນສະຖານທີ່ຂອງຄໍາສັ່ງທີ່ຈື່ໄວ້ໂດຍພໍ່ແມ່ (ເບິ່ງ. hash ໃນຫນ້າຂໍ້ມູນ) ແມ່ນຖືກເກັບຮັກສາໄວ້ໂດຍເດັກ.


ຮຸ່ນສ່ວນໃຫຍ່ຂອງ UNIX ເຮັດໃຫ້ມັນເປັນສ່ວນຫນຶ່ງຂອງກົນໄກການປະຕິບັດຄໍາສັ່ງຂອງລະບົບປະຕິບັດການ. ຖ້າແຖວທໍາອິດຂອງສະຄຣິບເລີ່ມຕົ້ນດ້ວຍສອງຕົວອັກສອນ "#!", ສ່ວນທີ່ເຫຼືອຂອງແຖວຈະລະບຸຕົວແປສໍາລັບໂປຣແກຣມ. ດັ່ງນັ້ນ, ທ່ານສາມາດກໍານົດ bash, ງຸ່ມ, perl ຫຼືບາງນາຍແປພາສາຫຼືແກະອື່ນແລະຂຽນສ່ວນທີ່ເຫຼືອຂອງໄຟລ໌ script ໃນພາສານັ້ນ.


ການໂຕ້ຖຽງກັບນາຍພາສາປະກອບດ້ວຍການໂຕ້ຖຽງທາງເລືອກດຽວທີ່ປະຕິບັດຕາມຊື່ນາຍພາສາໃນແຖວທໍາອິດຂອງໄຟລ໌ສະຄິບ, ຕິດຕາມດ້ວຍຊື່ຂອງໄຟລ໌ສະຄິບ, ປະຕິບັດຕາມການໂຕ້ຖຽງສ່ວນທີ່ເຫຼືອ. Bash ຈະດໍາເນີນການນີ້ໃນລະບົບປະຕິບັດການທີ່ບໍ່ໄດ້ຈັດການກັບມັນເອງ.


Bash scripts ມັກຈະເລີ່ມຕົ້ນດ້ວຍ


#! / bin / bash (ສົມມຸດວ່າ Bash ໄດ້ຖືກຕິດຕັ້ງຢູ່ໃນ / ຖັງ), ເນື່ອງຈາກວ່ານີ້ຮັບປະກັນວ່າ Bash ຈະຖືກນໍາໃຊ້ເພື່ອຕີຄວາມຫມາຍຂອງສະຄິບ, ເຖິງແມ່ນວ່າມັນຖືກປະຕິບັດພາຍໃຕ້ແກະອື່ນ.


ຮູບພາບເລັກນ້ອຍ


7.2.5.2. ບາງຕົວຢ່າງທີ່ງ່າຍດາຍ


script ທີ່ງ່າຍດາຍຫຼາຍປະກອບດ້ວຍຄໍາສັ່ງດຽວ, ທີ່ເວົ້າວ່າສະບາຍດີກັບຜູ້ໃຊ້ປະຕິບັດມັນ:


[jerry@ nowhere ~] cat hello.sh

#! / bin / bash

ສຽງສະທ້ອນ "ສະບາຍດີ $USER"

[jerry@ nowhere ~] cat hello.sh

#! / bin / bash

ສຽງສະທ້ອນ "ສະບາຍດີ $USER"

script ຕົວຈິງປະກອບດ້ວຍພຽງແຕ່ຫນຶ່ງຄໍາສັ່ງ, echo, ເຊິ່ງໃຊ້ ມູນຄ່າຂອງ ($) ໄດ້ ຜູ້ໃຊ້ ຕົວແປສະພາບແວດລ້ອມເພື່ອພິມສະຕຣິງທີ່ປັບແຕ່ງໃຫ້ກັບຜູ້ໃຊ້ທີ່ອອກຄໍາສັ່ງ.


ອີກແຖວໜຶ່ງ, ໃຊ້ເພື່ອສະແດງຜູ້ໃຊ້ທີ່ເຊື່ອມຕໍ່:


#! / bin / bash

ໃຜ | ຕັດ -d " " -f 1 | ຄັດ -u

#! / bin / bash

ໃຜ | ຕັດ -d " " -f 1 | ຄັດ -u

ນີ້ແມ່ນສະຄຣິບທີ່ປະກອບດ້ວຍບາງເສັ້ນເພີ່ມເຕີມ, ທີ່ຂ້ອຍໃຊ້ເພື່ອເຮັດສໍາເນົາສໍາຮອງຂອງໄຟລ໌ທັງຫມົດໃນໄດເລກະທໍລີ. script ທໍາອິດສ້າງບັນຊີລາຍຊື່ຂອງໄຟລ໌ທັງຫມົດໃນໄດເລກະທໍລີປະຈຸບັນແລະວາງໄວ້ໃນຕົວແປ LIST. ຫຼັງຈາກນັ້ນ, ມັນກໍານົດຊື່ຂອງສໍາເນົາສໍາລັບແຕ່ລະໄຟລ໌, ແລະຫຼັງຈາກນັ້ນມັນສໍາເນົາໄຟລ໌. ສໍາລັບແຕ່ລະໄຟລ໌, ຂໍ້ຄວາມຖືກພິມອອກ:


tille:~> cat bin/makebackupfiles.sh

#! / bin / bash

# ເຮັດສຳເນົາຂອງໄຟລ໌ທັງໝົດໃນໄດເລກະທໍລີ LIST=`ls`

ສໍາລັບຂ້ອຍໃນ $LIST; ເຮັດ

ORIG=$i

DEST=$i.old

cp $ORIG $DEST echo "ສຳເນົາ $i"

ເຮັດ

tille:~> cat bin/makebackupfiles.sh

#! / bin / bash

# ເຮັດສຳເນົາຂອງໄຟລ໌ທັງໝົດໃນໄດເລກະທໍລີ LIST=`ls`

ສໍາລັບຂ້ອຍໃນ $LIST; ເຮັດ

ORIG=$i

DEST=$i.old

cp $ORIG $DEST echo "ສຳເນົາ $i"

ເຮັດ

ພຽງແຕ່ເຂົ້າໄປໃນເສັ້ນເຊັ່ນ mv * *.ເກົ່າ ຈະບໍ່ເຮັດວຽກ, ດັ່ງທີ່ທ່ານຈະສັງເກດເຫັນໃນເວລາທີ່ພະຍາຍາມນີ້ຢູ່ໃນຊຸດຂອງໄຟລ໌ການທົດສອບ. ອັນ echo ຄໍາສັ່ງໄດ້ຖືກເພີ່ມເພື່ອສະແດງກິດຈະກໍາບາງຢ່າງ. echo's ໂດຍທົ່ວໄປແມ່ນເປັນປະໂຫຍດເມື່ອ script ຈະບໍ່ເຮັດວຽກ: ໃສ່ຫນຶ່ງຫຼັງຈາກແຕ່ລະຂັ້ນຕອນທີ່ສົງໃສແລະເຈົ້າຈະພົບເຫັນຂໍ້ຜິດພາດໃນເວລາບໍ່ດົນ.


ໄດ້ /etc/rc.d/init.d ໄດເລກະທໍລີປະກອບດ້ວຍຕົວຢ່າງຈໍານວນຫລາຍ. ລອງເບິ່ງສະຄຣິບນີ້ທີ່ຄວບຄຸມເຊີບເວີ ICanSeeYou ທີ່ສົມຈິງ:


#! / bin / sh

# ລາຍລະອຽດ: ICanSeeYou ຊ່ວຍໃຫ້ທ່ານເຫັນຄົນທີ່ມີເຄືອຂ່າຍ


# ຊື່ຂະບວນການ: ICanSeeYou

# pidfile: /var/run/ICanSeeYou/ICanSeeYou.pid

# config: /etc/ICanSeeYou.cfg


# ຫ້ອງສະຫມຸດຟັງຊັນແຫຼ່ງ.

. /etc/rc.d/init.d/functions


# ເບິ່ງວິທີການ (ທີ່ມີການໂຕ້ຖຽງ) ພວກເຮົາຖືກເອີ້ນ. ກໍລະນີ "$1" ໃນ

ເລີ່ມຕົ້ນ)

echo -n "ເລີ່ມ ICanSeeYou:" daemon ICanSeeYou

echo

ແຕະ /var/lock/subsys/ICanSeeYou

;;

ຢຸດ)

echo -n "ການປິດ ICanSeeYou:"

#! / bin / sh

# ລາຍລະອຽດ: ICanSeeYou ຊ່ວຍໃຫ້ທ່ານເຫັນຄົນທີ່ມີເຄືອຂ່າຍ


# ຊື່ຂະບວນການ: ICanSeeYou

# pidfile: /var/run/ICanSeeYou/ICanSeeYou.pid

# config: /etc/ICanSeeYou.cfg


# ຫ້ອງສະຫມຸດຟັງຊັນແຫຼ່ງ.

. /etc/rc.d/init.d/functions


# ເບິ່ງວິທີການ (ທີ່ມີການໂຕ້ຖຽງ) ພວກເຮົາຖືກເອີ້ນ. ກໍລະນີ "$1" ໃນ

ເລີ່ມຕົ້ນ)

echo -n "ເລີ່ມ ICanSeeYou:" daemon ICanSeeYou

echo

ແຕະ /var/lock/subsys/ICanSeeYou

;;

ຢຸດ)

echo -n "ການປິດ ICanSeeYou:"


killproc ICanSeeYou echo

rm -f /var/lock/subsys/ICanSeeYou

rm -f /var/run/ICanSeeYou/ICanSeeYou.pid

;;

ສະຖານະພາບ)

ສະຖານະ ICanSeeYou

;;

ເລີ່ມ​ຕົ້ນ​ໃຫມ່)

$0 ຢຸດ

$0 ເລີ່ມຕົ້ນ

;;

*)

echo "ການນຳໃຊ້: $0 {start|stop|restart|status}" ອອກ 1

ວ່າ C


ທາງອອກ 0

killproc ICanSeeYou echo

rm -f /var/lock/subsys/ICanSeeYou

rm -f /var/run/ICanSeeYou/ICanSeeYou.pid

;;

ສະຖານະພາບ)

ສະຖານະ ICanSeeYou

;;

ເລີ່ມ​ຕົ້ນ​ໃຫມ່)

$0 ຢຸດ

$0 ເລີ່ມຕົ້ນ

;;

*)

echo "ການນຳໃຊ້: $0 {start|stop|restart|status}" ອອກ 1

ວ່າ C


ທາງອອກ 0

ຫນ້າທໍາອິດ, ກັບ . command (dot) ຊຸດຂອງຟັງຊັນ shell, ຖືກນໍາໃຊ້ໂດຍເກືອບທັງຫມົດ shell scripts ໃນ

/etc/rc.d/init.d, ຖືກໂຫລດ. ຈາກນັ້ນ ກ ກໍລະນີ ຄໍາສັ່ງຖືກອອກ, ເຊິ່ງກໍານົດ 4 ວິທີທີ່ແຕກຕ່າງກັນທີ່ script ສາມາດປະຕິບັດ. ຕົວຢ່າງອາດຈະເປັນ ຂ້ອຍ​ສາ​ມາດ​ເຫັນ​ເຈົ້າ ການເລີ່ມຕົ້ນ. ການ​ຕັດ​ສິນ​ໃຈ​ຂອງ​ກໍ​ລະ​ນີ​ທີ່​ຈະ​ນໍາ​ໃຊ້​ແມ່ນ​ເຮັດ​ໄດ້​ໂດຍ​ການ​ອ່ານ (ທໍາ​ອິດ​) ການ​ໂຕ້​ຖຽງ​ກັບ script ໄດ້​, ມີ​ສໍາ​ນວນ​. $1.


ເມື່ອບໍ່ມີການປ້ອນຂໍ້ມູນເຂົ້າກັນໄດ້, ກໍລະນີເລີ່ມຕົ້ນ, ທີ່ໝາຍດ້ວຍເຄື່ອງໝາຍດາວ, ຖືກນຳໃຊ້, ເຊິ່ງສະຄຣິບໃຫ້ຂໍ້ຄວາມສະແດງຂໍ້ຜິດພາດ. ໄດ້ ກໍລະນີ ບັນຊີລາຍຊື່ແມ່ນສິ້ນສຸດລົງດ້ວຍ ວ່າ C ຖະແຫຼງການ. ໃນ ການເລີ່ມຕົ້ນ ກໍ​ລະ​ນີ​ທີ່​ໂຄງ​ການ​ເຄື່ອງ​ແມ່​ຂ່າຍ​ແມ່ນ​ໄດ້​ເລີ່ມ​ຕົ້ນ​ເປັນ daemon​, ແລະ ID ຂະ​ບວນ​ການ​ແລະ​ການ​ລັອກ​ແມ່ນ​ໄດ້​ຮັບ​ມອບ​ຫມາຍ​. ໃນ ຢຸດ ກໍ​ລະ​ນີ, ຂະ​ບວນ​ການ​ເຄື່ອງ​ແມ່​ຂ່າຍ​ແມ່ນ traced ລົງ​ແລະ​ຢຸດ​ເຊົາ, ແລະ lock ແລະ PID ໄດ້​ຖືກ​ໂຍກ​ຍ້າຍ​ອອກ. ທາງເລືອກ, ເຊັ່ນ: daemon ທາງເລືອກ, ແລະຫນ້າທີ່ຄ້າຍຄື killproc, ຖືກກໍານົດໄວ້ໃນ /etc/rc.d/init.d/functions ໄຟລ໌. ການຕັ້ງຄ່ານີ້ແມ່ນສະເພາະກັບການແຈກຢາຍທີ່ໃຊ້ໃນຕົວຢ່າງນີ້. initscripts ໃນລະບົບຂອງທ່ານອາດຈະໃຊ້ຟັງຊັນອື່ນ, ກໍານົດຢູ່ໃນໄຟລ໌ອື່ນໆ, ຫຼືບໍ່ມີທັງຫມົດ.


ເມື່ອສຳເລັດ, ສະຄຣິບຈະສົ່ງຄືນລະຫັດອອກຂອງສູນໃຫ້ກັບພໍ່ແມ່ຂອງມັນ.


ສະຄຣິບນີ້ເປັນຕົວຢ່າງທີ່ດີຂອງການໃຊ້ຟັງຊັນຕ່າງໆ, ເຊິ່ງເຮັດໃຫ້ສະຄຣິບອ່ານງ່າຍຂຶ້ນ ແລະເຮັດວຽກໄດ້ໄວຂຶ້ນ. ໃຫ້ສັງເກດວ່າພວກເຂົາໃຊ້ sh ແທນ​ທີ່ bash, ເພື່ອເຮັດໃຫ້ພວກມັນເປັນປະໂຫຍດໃນລະບົບທີ່ກວ້າງຂວາງ. ໃນລະບົບ Linux, ໂທຫາ bash as sh ສົ່ງຜົນໃຫ້ Shell ເຮັດວຽກຢູ່ໃນໂໝດ POSIX-compliant.


OS Cloud Computing ຍອດນິຍົມຢູ່ OnWorks: