ອອກຈາກສະຖານະ
ຄໍາສັ່ງ (ລວມທັງ scripts ແລະ shell functions ທີ່ພວກເຮົາຂຽນ) ອອກຄ່າໃຫ້ກັບລະບົບເມື່ອພວກເຂົາຢຸດ, ເອີ້ນວ່າ an ສະຖານະການອອກ. ຄ່ານີ້, ເຊິ່ງເປັນຈໍານວນເຕັມໃນລະຫວ່າງ 0 ຫາ 255, ຊີ້ໃຫ້ເຫັນເຖິງຄວາມສໍາເລັດຫຼືຄວາມລົ້ມເຫຼວຂອງການປະຕິບັດຄໍາສັ່ງ. ຕາມສົນທິສັນຍາ, ຄ່າຂອງສູນສະແດງເຖິງຄວາມສຳເລັດ ແລະມູນຄ່າອື່ນໆຊີ້ໃຫ້ເຫັນເຖິງຄວາມລົ້ມເຫລວ. Shell ສະຫນອງພາລາມິເຕີທີ່ພວກເຮົາສາມາດນໍາໃຊ້ເພື່ອກວດເບິ່ງສະຖານະການອອກ. ນີ້ພວກເຮົາເຫັນມັນຢູ່ໃນການປະຕິບັດ:
[me@linuxbox ~]$ ls -d /usr/bin
/ usr / ຖັງ
[me@linuxbox ~]$ ສະທ້ອນ $?
0
[me@linuxbox ~]$ ls -d /bin/usr
ls: ບໍ່ສາມາດເຂົ້າເຖິງ /bin/usr: ບໍ່ມີໄຟລ໌ດັ່ງກ່າວຫຼືໄດເລກະທໍລີ [me@linuxbox ~]$ ສະທ້ອນ $?
2
[me@linuxbox ~]$ ls -d /usr/bin
/ usr / ຖັງ
[me@linuxbox ~]$ ສະທ້ອນ $?
0
[me@linuxbox ~]$ ls -d /bin/usr
ls: ບໍ່ສາມາດເຂົ້າເຖິງ /bin/usr: ບໍ່ມີໄຟລ໌ດັ່ງກ່າວຫຼືໄດເລກະທໍລີ [me@linuxbox ~]$ ສະທ້ອນ $?
2
ອອກຈາກສະຖານະ
ໃນຕົວຢ່າງນີ້, ພວກເຮົາດໍາເນີນການ ls ຄໍາສັ່ງສອງຄັ້ງ. ຄັ້ງທໍາອິດ, ຄໍາສັ່ງປະຕິບັດຢ່າງສໍາເລັດຜົນ. ຖ້າພວກເຮົາສະແດງຄ່າຂອງພາລາມິເຕີ $?, ພວກເຮົາເຫັນວ່າມັນເປັນສູນ. ພວກເຮົາປະຕິບັດການ ls ສັ່ງເທື່ອທີສອງ (ການລະບຸລະບົບທີ່ບໍ່ມີຢູ່ແລ້ວ), ການຜະລິດຄວາມຜິດພາດ, ແລະກວດສອບພາລາມິເຕີ $? ອີກເທື່ອຫນຶ່ງ. ເວລານີ້ມັນມີ 2, ສະແດງໃຫ້ເຫັນວ່າຄໍາສັ່ງພົບຂໍ້ຜິດພາດ. ບາງຄໍາສັ່ງໃຊ້ຄ່າສະຖານະພາບທາງອອກທີ່ແຕກຕ່າງກັນເພື່ອສະຫນອງການວິນິດໄສສໍາລັບຄວາມຜິດພາດ, ໃນຂະນະທີ່ຄໍາສັ່ງຈໍານວນຫຼາຍພຽງແຕ່ອອກດ້ວຍຄ່າຫນຶ່ງເມື່ອພວກເຂົາລົ້ມເຫລວ. ຫນ້າຜູ້ຊາຍມັກຈະປະກອບມີພາກສ່ວນທີ່ມີຊື່ວ່າ "ອອກຈາກສະຖານະ," ອະທິບາຍວ່າລະຫັດໃດຖືກນໍາໃຊ້. ຢ່າງໃດກໍຕາມ, ສູນສະເຫມີຊີ້ໃຫ້ເຫັນຜົນສໍາເລັດ.
Shell ສະຫນອງສອງຄໍາສັ່ງ builtin ງ່າຍດາຍທີ່ສຸດທີ່ບໍ່ມີຫຍັງຍົກເວັ້ນ terminate ກັບສູນຫຼືຫນຶ່ງສະຖານະການອອກ. ໄດ້ ທີ່ແທ້ຈິງ ຄໍາ ສັ່ງ ສະ ເຫມີ ໄປ ປະ ຕິ ບັດ ຜົນ ສໍາ ເລັດ - ຢ່າງ ເຕັມ ສ່ວນ ແລະ ທີ່ບໍ່ຖືກຕ້ອງ ຄໍາສັ່ງສະເຫມີປະຕິບັດບໍ່ສໍາເລັດ:
[me@linuxbox ~]$ ທີ່ແທ້ຈິງ [me@linuxbox ~]$ ສະທ້ອນ $? 0
[me@linuxbox ~]$ ທີ່ບໍ່ຖືກຕ້ອງ [me@linuxbox ~]$ ສະທ້ອນ $? 1
[me@linuxbox ~]$ ທີ່ແທ້ຈິງ [me@linuxbox ~]$ ສະທ້ອນ $? 0
[me@linuxbox ~]$ ທີ່ບໍ່ຖືກຕ້ອງ [me@linuxbox ~]$ ສະທ້ອນ $? 1
ພວກເຮົາສາມາດໃຊ້ຄໍາສັ່ງເຫຼົ່ານີ້ເພື່ອເບິ່ງວິທີການ if ຖະແຫຼງການເຮັດວຽກ. ແມ່ນຫຍັງ if ຄໍາຖະແຫຼງທີ່ເຮັດຢ່າງແທ້ຈິງແມ່ນການປະເມີນຄວາມສໍາເລັດຫຼືຄວາມລົ້ມເຫຼວຂອງຄໍາສັ່ງ:
[me@linuxbox ~]$ ຖ້າເປັນຄວາມຈິງ; ຫຼັງຈາກນັ້ນ, "ມັນເປັນຄວາມຈິງ." ຟີ
ມັນເປັນຄວາມຈິງ.
[me@linuxbox ~]$ ຖ້າບໍ່ຖືກຕ້ອງ; ຫຼັງຈາກນັ້ນ, "ມັນເປັນຄວາມຈິງ." ຟີ
[me@linuxbox ~]$
[me@linuxbox ~]$ ຖ້າເປັນຄວາມຈິງ; ຫຼັງຈາກນັ້ນ, "ມັນເປັນຄວາມຈິງ." ຟີ
ມັນເປັນຄວາມຈິງ.
[me@linuxbox ~]$ ຖ້າບໍ່ຖືກຕ້ອງ; ຫຼັງຈາກນັ້ນ, "ມັນເປັນຄວາມຈິງ." ຟີ
[me@linuxbox ~]$
ຄໍາສັ່ງ ສຽງສະທ້ອນ "ມັນເປັນຄວາມຈິງ." ຖືກປະຕິບັດເມື່ອຄໍາສັ່ງຕໍ່ໄປນີ້ if exe- ງາມຢ່າງສໍາເລັດຜົນ, ແລະບໍ່ໄດ້ຖືກປະຕິບັດໃນເວລາທີ່ຄໍາສັ່ງດັ່ງຕໍ່ໄປນີ້ if ບໍ່ໄດ້ປະຕິບັດຢ່າງສໍາເລັດຜົນ. ຖ້າບັນຊີລາຍຊື່ຂອງຄໍາສັ່ງດັ່ງຕໍ່ໄປນີ້ if, ຄໍາສັ່ງສຸດທ້າຍໃນບັນຊີລາຍຊື່ໄດ້ຖືກປະເມີນ:
[me@linuxbox ~]$ ຖ້າບໍ່ຖືກຕ້ອງ; ຄວາມຈິງ; ຫຼັງຈາກນັ້ນ, "ມັນເປັນຄວາມຈິງ." fi ມັນເປັນຄວາມຈິງ.
[me@linuxbox ~]$ ຖ້າເປັນຄວາມຈິງ; ບໍ່ຖືກຕ້ອງ; ຫຼັງຈາກນັ້ນ, "ມັນເປັນຄວາມຈິງ." fi [me@linuxbox ~]$
[me@linuxbox ~]$ ຖ້າບໍ່ຖືກຕ້ອງ; ຄວາມຈິງ; ຫຼັງຈາກນັ້ນ, "ມັນເປັນຄວາມຈິງ." fi ມັນເປັນຄວາມຈິງ.
[me@linuxbox ~]$ ຖ້າເປັນຄວາມຈິງ; ບໍ່ຖືກຕ້ອງ; ຫຼັງຈາກນັ້ນ, "ມັນເປັນຄວາມຈິງ." fi [me@linuxbox ~]$